协同程序
性能考虑因素
最好合适地使用协同程序,因为灵活性会带来性能成本。
- 与标准的 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
不会产生额外的垃圾。