在Unity中,Invoke 系列方法允许你安排在将来的某个时间点执行特定的函数调用。这些方法主要用于时间延迟执行,它们包括 Invoke、InvokeRepeating 和 CancelInvoke。
Invoke
Invoke 方法用于在指定的时间延迟后调用一次方法。它的基本用法如下:
Invoke("MethodName", delayTime);
MethodName:要调用的方法的名称。
delayTime:延迟的时间,单位为秒。
InvokeRepeating
InvokeRepeating 方法用于在指定的时间延迟后开始重复调用方法,每次调用之间会有固定的时间间隔。它的基本用法如下:
InvokeRepeating("MethodName", delayTime, repeatRate);
MethodName:要调用的方法的名称。
delayTime:首次调用方法前的延迟时间,单位为秒。
repeatRate:重复调用方法的时间间隔,单位为秒。
CancelInvoke
CancelInvoke 方法用于取消之前使用 Invoke 或 InvokeRepeating 方法安排的函数调用。它的基本用法如下:
CancelInvoke("MethodName");
MethodName:要取消的调用的方法的名称。
如果未指定方法名称,则取消该对象上所有使用 Invoke 或 InvokeRepeating 方法安排的调用。
示例
以下是如何使用 Invoke 系列方法的一个简单示例:
using UnityEngine;
public class InvokeExample : MonoBehaviour
{
void Start()
{
// 5秒后调用PrintMessage方法
Invoke("PrintMessage", 5.0f);
// 2秒后开始重复调用RepeatMessage方法,每隔1秒调用一次
InvokeRepeating("RepeatMessage", 2.0f, 1.0f);
}
void PrintMessage()
{
Debug.Log("这是Invoke方法5秒后调用的。");
}
void RepeatMessage()
{
Debug.Log("这是InvokeRepeating方法每隔1秒调用的。");
}
void CancelInvokes()
{
// 取消PrintMessage方法的Invoke调用
CancelInvoke("PrintMessage");
// 取消所有Invoke或InvokeRepeating调用
CancelInvoke();
}
}
在上面的示例中,PrintMessage 方法将在5秒后被调用一次,而 RepeatMessage 方法将在2秒后开始,每隔1秒被调用一次。CancelInvokes 方法可以用于取消这些调用。
使用 Invoke 系列方法时,需要注意它们只能在游戏运行时使用,并且它们依赖于游戏的时间缩放(Time Scale)设置。如果时间缩放设置为0,则游戏时间将停止,但 Invoke 系列方法仍然会按照实际时间执行。
想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程