今回はInvokeの使い方についてまとめてみました。
[ Invoke ]
Invokeは指定した関数を指定した秒数後に呼び出すことができます。
下記は3秒後にコンソールに「3秒後に呼び出されるよ!」と出力するスクリプトです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptTest : MonoBehaviour { void Start() { //FunctionTestを3秒後に呼び出します。 Invoke("FunctionTest", 3f); } void FunctionTest() { Debug.Log("3秒後に呼び出されるよ!"); } }
[ InvokeRepeating ]
InvokeRepeatingは指定した関数を指定した秒数毎に呼び出すことができます。
下記は3秒毎にコンソールに「3秒毎に呼び出されるよ!」と出力するスクリプトです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptTest : MonoBehaviour { void Start() { //FunctionTestを3秒毎に呼び出します。 InvokeRepeating("FunctionTest", 0f, 3f); } void FunctionTest() { Debug.Log("3秒毎に呼び出されるよ!"); } }
[ CancelInvoke ]
CancelInvokeはInvokeやInvokeRepeatingの呼び出しを無効化できます。
下記は3秒後にコンソールに「3秒後に呼び出されるよ!」と出力するスクリプトです。しかしスペースキーを3秒以内に押せばコンソールに出力するのを無効化できます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptTest : MonoBehaviour { void Start() { //FunctionTestを3秒後に呼び出します。 Invoke("FunctionTest", 3f); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { CancelInvoke("FunctionTest"); } } void FunctionTest() { Debug.Log("3秒後に呼び出されるよ!"); } }
[ IsInvoking ]
IsInvokingはInvokeやInvokeRepeatingの呼び出しの有無を判別できます。
下記は3秒後にコンソールに「3秒後に呼び出されるよ!」と出力するスクリプトです。スペースキーを3秒以内に押すとコンソールに「FunctionTestは呼ばれるよ!」と出力します。3秒経った後に押すとコンソールに「FunctionTestは呼ばれないよ!」と出力します。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptTest : MonoBehaviour { void Start() { //FunctionTestを3秒後に呼び出します。 Invoke("FunctionTest", 3f); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { if (IsInvoking("FunctionTest")) { Debug.Log("FunctionTestは呼び出されるよ!"); } else { Debug.Log("FunctionTestは呼び出されないよ!"); } } } void FunctionTest() { Debug.Log("3秒後に呼び出されるよ!"); } }