这是我的第一个问题。
我学习了如何使用C#和Unity制作游戏,因此遇到了协程,我知道这些方法的工作原理,但是我不了解的是:
yield return null
例如:
IEnumerator Attack(){
// Somecode..
while(true){
//DoSomething..
yield return null
}
}
这个问题在这里被问到:Unity - IEnumerator's yield return null
但是我仍然需要更多说明
如果这个问题很愚蠢,请原谅,但是就像我说的我只是在学习。
谢谢。
答案 0 :(得分:0)
每个游戏都是基于循环的。您可以在简化图中看到此逻辑:
Here's full Unity frame logic chart感谢@ Draco18s。
此循环的一次迭代称为“框架”。 yield return null
就像循环中的continue
关键字一样工作-它只会继续进行下一个游戏循环迭代(又称为“框架”)。
为了更好地理解,让我们创建一个协程,该协程每帧打印当前帧号:
void Awake () {
StartCoroutine(PrintFrameCount());
}
IEnumerator PrintFrameCount() {
for (;;) {
Debug.Log(Time.frameCount);
yield return null;
}
}
这种协程仅打印当前帧计数的不同值,只有通过在不同帧中打印它才能更改。