前言
Invoke() 是unity内置的一个方法
没有重载,只有两个参数,意思是延时方法,在多少时间后调用一个方法
第一个参数是 字符串格式的方法名称,第二个参数以秒为单位的延时时间
public extern void Invoke (string methodName, float time);
Invoke方法的测试
表示3秒后调用fun方法
public class InvokeTest : MonoBehaviour {
void Start(){
Invoke ("fun", 3);
}
private void fun(){
Debug.Log ("invokeTest");
}
}
扩展
- InvokeRepeating()方法
表示过2秒后调用该方法,之后每隔4秒钟再次执行该方法
public class InvokeTest : MonoBehaviour {
void Start(){
InvokeRepeating ("fun", 2, 4);
}
private void fun(){
Debug.Log ("invokeTest");
}
}
注意cancel Invoke 中的第一个是小写的L ,第二一个是大写的i
CancelInvoke()方法
停止当前脚本中所有的Invoke()CancelInvoke(“funxxx”)
停止当前脚本中的某个方法IsInvoking();
判断是否有Invoke在执行
注意
- Invoke 不能传递参数
- 应该在脚本周期函数中调用
- 会受到Time.timeScale的影响
应用
当我们不想在Update函数里频繁调用方法,则可以使用InvokeRepeating()方法代替
在游戏需要刷怪的时候可以使用Invoke这些方法