1.從需求出發(fā)
延時是游戲編程中最常見的需求之一,角色的移動控制需要延時,事件觸發(fā)需要延時。有鑒于此,很多的游戲引起都會對延時控制提供了很好的支持,但從實現(xiàn)的層面來講,基本都是“標(biāo)記開始時間,在Update中持續(xù)更新檢查”的方法,代碼上實現(xiàn),如下圖所示:

實現(xiàn)延遲的方法
但這個方法并不是最佳的方法,在Untiy中,我們用于實現(xiàn)延時最好的方法是使用Coroutine,也就是協(xié)同函數(shù)。
2.Coroutine的使用
如果我們按照Untiy中Coroutine函數(shù)的實現(xiàn)方法去實現(xiàn)如上圖Update內(nèi)的函數(shù),大致如下圖所示:

Coroutine函數(shù)實現(xiàn)延遲
你需要的就是聲明一個返回值為IEnumrator的方法,然后在方法中使用yield return語法去返回一個 WaitForSenconds()的實例(返回值有很多,你也可以返回null),然后在需要用的時候 (如例子中在Start()方法中調(diào)用)通過StartCorutine(協(xié)程函數(shù)的方法名)去調(diào)用,從而實現(xiàn)延遲的功能。當(dāng)然,能通過StartCoroutine方法去調(diào)用協(xié)程函數(shù),那么也存在StopCoroutine(“協(xié)程函數(shù)的方法名”)去關(guān)閉協(xié)程。