【Unity】InvokeRepeatingで指定時間後の止めたい

InvokeRepeatingメソッドを使用して何かのアクションを定期的に実行してから3秒後に停止したい場合、InvokeRepeatingを開始するメソッドとCancelInvokeを使って呼び出しをキャンセルするメソッドの両方を用意する必要があります。以下のステップで実装できます:

  1. 定期的に実行されるメソッドを定義します。 例えば、何かのアクションを定期的に実行するRepeatActionメソッドを定義します。
  2. InvokeRepeatingを使用して、定期的な実行をスケジュールします。 Startメソッド内でInvokeRepeatingを呼び出して、RepeatActionが定期的に実行されるように設定します。
  3. 3秒後に定期実行を止めるために、CancelInvokeを呼び出すメソッドを用意します。

こちらがサンプルコードです:

using UnityEngine;

public class Repeater : MonoBehaviour
{
    void Start()
    {
        // 1秒ごとにRepeatActionを実行し始める
        InvokeRepeating("RepeatAction", 0, 1.0f);

        // 3秒後に全てのInvokeをキャンセル(止める)
        Invoke("StopRepeating", 3.0f);
    }

    void RepeatAction()
    {
        // 定期的に行いたいアクション
        Debug.Log("Action is repeated");
    }

    void StopRepeating()
    {
        // 全てのInvokeRepeatingをキャンセル
        CancelInvoke("RepeatAction");
    }
}

このコードでは、StartメソッドでRepeatActionが1秒ごとに実行されるように設定され、同時にStopRepeatingメソッドが3秒後に一度だけ呼び出されるように設定されています。StopRepeatingメソッドが実行されると、RepeatActionの定期実行がキャンセルされます。

Unity

Posted by hidepon