1.从需求出发
延时是游戏编程中最常见的需求之一,角色的移动控制需要延时,事件触发需要延时。有鉴于此,很多的游戏引起都会对延时控制提供了很好的支持,但从实现的层面来讲,基本都是“标记开始时间,在Update中持续更新检查”的方法,代码上实现,如下图所示:

但这个方法并不是最佳的方法,在Untiy中,我们用于实现延时最好的方法是使用Coroutine,也就是协同函数。
2.Coroutine的使用
如果我们按照Untiy中Coroutine函数的实现方法去实现如上图Update内的函数,大致如下图所示:

你需要的就是声明一个返回值为IEnumrator的方法,然后在方法中使用yield return语法去返回一个 WaitForSenconds()的实例(返回值有很多,你也可以返回null),然后在需要用的时候 (如例子中在Start()方法中调用)通过StartCorutine(协程函数的方法名)去调用,从而实现延迟的功能。当然,能通过StartCoroutine方法去调用协程函数,那么也存在StopCoroutine(“协程函数的方法名”)去关闭协程。
网友评论