对网上资源整理一下延时调用功能和几种方法:
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是延时的时间
浙公网安备 33010602011771号