【发布时间】:2019-06-20 07:11:24
【问题描述】:
这是我的第一个问题..
我学习如何使用 C# 和 Unity 制作游戏,所以我遇到了 协程,我知道这些方法是如何工作的,但有一点我不明白:
yield return null
例如:
IEnumerator Attack(){
// Somecode..
while(true){
//DoSomething..
yield return null
}
}
已在此处提出此问题:Unity - IEnumerator's yield return null
但我还需要更多解释
如果这个问题很愚蠢,请原谅我,但就像我说的那样,我只是在学习。
谢谢。
【问题讨论】:
-
“更多解释”比较模糊,具体有什么不明白的地方?
yield return null显然(如果我没看错的话)会让协程在下一帧继续。 -
对不起,这就是“继续下一帧!”这甚至意味着什么?@LasseVågsætherKarlsen
-
从 IEnumerable.GetEnumerator 在枚举器上调用 MoveNext 时继续
-
你可以把协程想象成带有额外控制的更新。在给定 MonoBehaviour 的情况下,已启动的协程被添加到 tge 的列表中,当编译器运行它们时,如果它遇到 yield return null,它会停止协程并将其设置回列表中。运行当前帧并开始下一帧。在某些时候,编译器会处理协程列表并再次运行协程,直到方法结束或达到另一个产量。在第一种情况下,协程对象被释放,在第二种情况下,它被重新设置在列表中并再次运行。
标签: c# visual-studio unity3d coroutine