协同程序

性能考虑因素

最好合适地使用协同程序,因为灵活性会带来性能成本。

  • 与标准的 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 不会产生额外的垃圾。