Invoke语句用于延时调用某个方法,它有两个参数
void Start()
{
Invoke ("SpawnObject", 2);
}
void SpawnObject()
{
Instantiate(target, new Vector3(0, 2, 0), Quaternion.identity);
}
I上述语句表示在程序执行到该语句两秒后执行SpawnObject方法
这里需要注意Invoke调用的方法必须是void类型且必须无参。
如果你希望重复执行SpawnObject方法,可以使用InvokeRepeating。
void Start()
{
InvokeRepeating("SpawnObject", 2, 1);
}
void SpawnObject()
{
float x = Random.Range(-2.0f, 2.0f);
float z = Random.Range(-2.0f, 2.0f);
Instantiate(target, new Vector3(x, 2, z), Quaternion.identity);
}
这个语句有三个参数,前两个参数效果与上文提到的一样,最后一个参数表示在第一次执行SpawnObject方法后,每过一秒执行一次SpawnObject方法,即第一次执行之后每次方法执行的时间间隔。
如果你想要停止某个InvokeRepeating。你可以使用CancelInvoke。
它有传参与不传参两种形式
当不传参,即CancelInvoke();形式时表示停止该脚本中所有的Invoke。
你也可以选择参数,即传递某个方法的名称,如CancelInvoke("SpawnObject");
表示停止调用SpawnObject这个方法的Invoke,只是停止某个特定的Invoke。