协程产量收益率null

时间:2019-01-26 20:25:13

标签: c# visual-studio unity3d coroutine

这是我的第一个问题。

我学习了如何使用C#和Unity制作游戏,因此遇到了协程,我知道这些方法的工作原理,但是我不了解的是:

yield return null

例如:

IEnumerator Attack(){
   // Somecode..
   while(true){
   //DoSomething..
   yield return null
}
}

这个问题在这里被问到:Unity - IEnumerator's yield return null

但是我仍然需要更多说明

如果这个问题很愚蠢,请原谅,但是就像我说的我只是在学习。

谢谢。

1 个答案:

答案 0 :(得分:0)

每个游戏都是基于循环的。您可以在简化图中看到此逻辑:

enter image description here

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;
    }
}

这种协程仅打印当前帧计数的不同值,只有通过在不同帧中打印它才能更改。

enter image description here