Unity協程(Coroutine)使用時需要注意的地方,協程異常中斷,異常停止執行的一種可能性

根據個人使用經驗,總結出來只有一點需要着重注意的地方, 那就是 協程運行時,所在的腳本和這個腳本所在的物體都必須是激活的,也就是說,它的父物體,父物體的父物體...都要是激活的。


在使用協程時,曾遇到以下幾點問題:

1、開啓協程時,確保協程所在的腳本、物體都是激活的,當然,這並不是很重要的,因爲當你嘗試這麼做的時候,Unity的容錯機制在運行時會爲你拋出一個錯誤。

2、這是曾經困惑我幾個小時的一個BUG當時情況是這樣的,我開啓了一個協程,做一個循環,類似於以下代碼:


IEnumerator Working()
{
    for(int i = 0; i < 100; ++I)
    {
        // dong....
        yield return null;
    }
}

相信很多人會這麼寫,但是我在運行時卻發現,無論我怎麼去修改這個循環,他都只會執行兩次,然後就沒有然後了,經過斷點調試發現,並不是正常的函數返回(yield break;)我查找了幾個小時想要找出這個BUG的問題所在,最終我找到了,原因是執行完兩次循環後,這個腳本所在的物體被另外的邏輯隱藏掉了

所以如果以後遇到協程奇怪的中斷執行,可以將這個原因劃入考慮行列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章