概念:伴隨着主線程⼀起運⾏的⼀段程序。
協程與協程之間是並⾏執⾏,與主線程也是並⾏執⾏。
協程可以用來計時,例如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協程會在遊戲開始時⾃動啓動