关于这个帖子的评论之一:Checking condition and calling continuous method with periods of delay unity,说:
永远不要使用协同程序。作为一名c#开发人员,他们从不同的角度教导坏习惯,如果你做一个普通的c#工作会导致私刑
我的问题是,这是为什么?这只是在Unity还是一般? Unity的官方虚拟现实样本https://www.assetstore.unity3d.com/en/#!/content/51519非常重视它们(特别是传单示例),而不是Invoke或Invoke Repeating,这些示例项目最近也已发布。
答案 0 :(得分:8)
这是一个非常统一的东西,虽然建议适用于任何地方。
开发人员不希望迭代IEnumerable
来改变程序的状态。它不是IEnumerable
的用途,并且与所有.NET的行为不一致。
Unity正在做的是使用yield return
作为伪协同程序,它会对任何不熟悉它的开发者造成混淆。
在现代C#中,我们有async / await来完成Unity的目标,但Unity是在该功能可用之前完成的。