協同程式

效能考慮因素

最好合適地使用協同程式,因為靈活性會帶來效能成本。

  • 與標準的 Update 方法相比,大量協同程式需要 CPU 更多。
  • 在某些版本的 Unity 中存在一個問題,由於 Unity 拳擊 MoveNext 返回值,協程會在每個更新週期產生垃圾。這是最後一次在 5.4.0b13 中觀察到的。 ( 錯誤報告

通過快取 YieldInstructions 減少垃圾

減少協程中生成的垃圾的一個常見技巧是快取 YieldInstruction

IEnumerator TickEverySecond()
{
    var wait = new WaitForSeconds(1f); // Cache
    while(true)
    {
        yield return wait; // Reuse
    }
}

屈服 null 不會產生額外的垃圾。