Posts Tagged ‘闭包’
Unity3D协程闭包事件执行定时器
星期一, 三月 11th, 2013 554 views介于U3D没有一个自带的事件执行定时器,所以打算自己动手做一个,基本思路如下,先用伪代码来写了
1 2 3 4 5 6 | void timer(int time,Func func){ wait(time);//等待N秒 func();//执行传入的函数 } |
最开始的思路是用闭包加线程来实现,之后和群里的朋友讨论了下,经过提示其实可以避免去碰线程这种bug多发产物,取而代之的是U3D包里自带的一个协程MonoBehaviour.StartCoroutine
先来完善下我们的事件定时器,惯例直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | using UnityEngine; using System.Collections; using System; public class EventTimer : MonoBehaviour { public IEnumerator Timer(float waitTime , Func[bool> func) { yield return new WaitForSeconds(waitTime); func(); } } |