unity 協程的用法

2021-10-04 21:26:08 字數 1134 閱讀 8022

概念:伴隨著主線程⼀起運⾏的⼀段程式。

協程與協程之間是並⾏執⾏,與主線程也是並⾏執⾏。

協程可以用來計時,例如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...