对网上资源整理一下延时调用功能和几种方法:
1.Invoke(string methodName,float time)
using
UnityEngine;
using
System.Collections;
public
class
example : MonoBehaviour {
public
Rigidbody projectile;
void
LaunchProjectile() {
Rigidbody instance =
Instantiate(projectile);
instance.velocity = Random.insideUnitSphere
* 5;
}
public
void
Awake()
{
Invoke(
"LaunchProjectile"
, 2);//函数名,延时时间
}
}
2.每隔一定时间调用一次MethodName函数,根据时间调用指定方法名的方法
using
UnityEngine;
using
System.Collections;
public
class
example : MonoBehaviour {
public
Rigidbody projectile;
void
LaunchProjectile() {
Rigidbody instance =
Instantiate(projectile);
instance.velocity = Random.insideUnitSphere
* 5;
}
public
void
Awake() {
InvokeRepeating(
"LaunchProjectile"
, 2, 0.3F);
//2秒后,每0.3f调用一次
}
}
3.用IEnumerator DoSomeThingInDelay()函数
//定义IEnumerator函数 IEnumerator Waitexample(float delayTime) { yield return new WaitForSeconds(delayTime); //在后面加入你要运行的脚本 }
不过这个方法怎么用怎么不好。
4.这是网上一个自己写的代码,还不错
//延时函数 using UnityEngine; using System.Collections; using System; public class DelayToInvoke : MonoBehaviour { public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds) { yield return new WaitForSeconds(delaySeconds); action(); } }
在别的脚本中调用时
//用StartCoroutine调用 StartCoroutine(DelayToInvoke.DelayToInvokeDo(() => { //你要运行的函数 },3f)); //3f是延时的时间