UnityでRPGを作ってみる

UnityでRPGを作ってみる

長押しできるボタンを作る

やりたいこと

スマホRPGでよくある、スキルボタンを押したらそれで攻撃し、長押ししたらヘルプウィンドウを呼び出すとかああいうのを作ります。

やり方

ボタン化したいImageにEvent Triggerをアタッチメントし、Pointer Down、Pointer Upを作る
f:id:allmoreidea:20200510214458j:plain


押しっぱなし(Pointer Down)のときはフラグをONして、Update関数内でフラグがONした時間をカウント。
カウントが閾値を超えた時に処理を書けば、長押し処理の出来上がり。

// ボタン長押し用の変数定義
    const float POINTER_DOWN_TIME = 0.3f;
    bool pointer_down = false;
    float PointerDownTimer = 0;

void Update () {

       // ボタン長押し用処理
        if (pointer_down == true)
        {
            PointerDownTimer += Time.deltaTime;

            // 長押しされた時の処理
            if (PointerDownTimer > POINTER_DOWN_TIME)
            {

            }
        }
        else
        {
            // 長押しされなかった時の処理
            if ((0< PointerDownTimer) && (PointerDownTimer < POINTER_DOWN_TIME)){

            }
            PointerDownTimer = 0;
        }
}

public void PointerDown()
    {
        pointer_down = true;
    }

    public void PointerUp()
    {
        pointer_down = false;
    }

POINTER_DOWN_TIMEに適当な値を突っ込んでください。
自分は0.3秒(0.3f)にしました。この辺は各自調整するのがよろしいかと。