概念:伴隨著主線程⼀起運⾏的⼀段程式。
協程與協程之間是並⾏執⾏,與主線程也是並⾏執⾏。
協程可以用來計時,例如lol生產野怪,在怪物死亡時呼叫計時生成野怪的協程,那麼這段程式只會在野怪倒計時的時候執行,生成野怪後協程就會關閉,比起直接寫在主程序裡節省效能。
關鍵字ienumerator
協程必須返回 yield retrun
yield return 【具體的值】:
暫停協程
等待下⼀幀繼續執⾏
執⾏的時間節點
在update之後
lateupdate之前
yield return new waitforseconds(n)
暫停協程
等待n秒之後繼續執⾏
yield return new waitforfixedupdate()
暫停協程 ,
等待⼀個fifixed的時間間隔之後繼續執⾏
相當於yield return new waitforseconds(0.02)
yield return startcoroutine(協程⽅法);
暫停協程
等待yield return 的協程執⾏完了之後繼續執⾏本協程
開始協程的方法:
1.startcoroutine
(協程⽅法([協程引數]))
2.startcoroutine
(」⽅法名稱」)
3.startcoroutine
(」⽅法名稱」,⽅法引數)
//⽤這種⽅式啟動的協程
引數只能是1個
停止協程的方法:
1.stopcoroutine(coroutine)
2.stopcoroutine(ienumerator)
3.stopcoroutine(string methodname) //
只能停掉,⽤字串啟動的協程
4.stopallcoroutine 停⽌所有正在運⾏的協程 //一般不用,你可能會停止別人寫的協程
跳出協程需要用 yield break
特殊協程
ienumerator start()
//start協程會在遊戲開始時⾃動啟動
Unity 協程詳解
class myiter ienumerable myiter iter newmyiter foreach int num in iter 我們需要讓資料結構支援foreach遍歷,所以要繼承ienumerable介面,實現getenumerator方法返回乙個迭代器,那麼這裡就很奇怪,返回值明明...
Unity中的協程
1.建立協程 迭代器 ienumerator private ienumerator test 裡面可以使用 yield return new waitforsecond 1 等待1s後執行後面的 yield return new waitforseconds 0.3f 等待0.3秒,一段指定的時間...
Unity 之 協程 初級
協程可以通過startcoroutine 來呼叫 只需要在裡面穿進去乙個ienumerator型別的方法 就可以了。這個方法是可以帶有引數的哦。舉個例子 ienumerator test2 void start 這樣就在一開始呼叫這個test2的方法了 現在我來著重講講最讓人煩心的yield ret...