今回はUnityの「Invoke」という機能の使い方を初心者の方にも分かりやすく解説していきます。
Invokeとは?
まず初めに、「Invoke」が何かを理解しましょう。Invokeは、Unityの機能の一つであり、指定した時間が経ったら何かを自動で実行できる機能です。これにより、特定のイベントやアクションを時間差で実行することができます。例えば、2秒後にキャラクターがジャンプするように設定できます。
基本の使い方
1.メソッドをつくる:Invokeで呼び出すためのメソッドを作ります。
void MyMethod()
{
// ここにやりたいことを書く
}
2.Invokeで呼ぶ:Invokeを使って、先ほどつくったメソッドを何秒後かに呼び出します。
Invoke("MyMethod", 2.0f); // 2秒後にMyMethodが実行されるよ
もっと詳しい使い方
using UnityEngine;
public class Unity : MonoBehaviour
{
void Start()
{
Invoke("Test", 5.0f); // 関数Testを5秒後に実行
}
void Test()
{
Debug.Log("Invoke実行したよ");
}
}
Invokeは関数を遅らせて呼び出すことができます。
コルーチンのような処理ができます。
Invokeを使用してパラメーターを伴うメソッドを呼び出すこともできます。
void MyMethodWithParam(string message)
{
// ここにメッセージを使った処理を書く
}
Invoke("MyMethodWithParam", 3.0f, "Hello, Unity!"); // 3秒後にMyMethodWithParamが呼び出される
InvokeRepeating
同じメソッドを繰り返し呼び出すことも可能です。
using UnityEngine;
public class Unity : MonoBehaviour
{
void Start()
{
InvokeRepeating("Test", 1.0f,2.0f); // 関数Testを1秒後に実行2秒間隔で繰り返す
}
void Test()
{
Debug.Log("InvokeRepeating実行したよ");
}
}
Invokeのように関数を遅らせて実行した後、指定した間隔で関数を繰り返すことができます。
書き方はInvokeRepeating(“実行する関数名”,実行するまでの秒数, 繰り返す秒数)と書きます。
上のスクリプトではスタート関数でInvokeを実行して1秒後にtestを実行その後2秒間隔でtestを繰り返します。

CancelInvoke
void Update()
{
// スペースキーを押したらInvokeを全てキャンセルする
if (Input.GetKeyDown(KeyCode.Space))
{
CancelInvoke();
}
}
CancelInvokeは、InvokeやInvokeRepeatingをキャンセルすることができます。
CancelInvoke();と書くと全てのInvokeをキャンセルします。
CancelInvoke(“関数名”);と入力すると入力した関数名のInvokeをキャンセルします。