Unity⭐️当Unity协程遇到while

Posted 小星河丨U3D开发支持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity⭐️当Unity协程遇到while相关的知识,希望对你有一定的参考价值。

文章目录


Unity协程是一个老生常谈的知识点了,但今天博主却差点被一篇文章忽悠了

那就是这句话:

为什么说这句话不对呢

那就是当遇到while时,我们再来检验这句话的正确性:

按上面那句话,应该每次yield return后,都会跳到StartCoroutine,去执行 print(111);

会无限次的执行Start里的方法。

private void Start()

    StartCoroutine(CalculateFramesPerSecond());
    print(111);

 
private IEnumerator CalculateFramesPerSecond()

    while (true)
    
        yield return new WaitForSecondsRealtime(1.0f);
        print(222);
    

但实际是这样嘛?

实际只输出了:

111
222
222
222
...

我们在做测试时也会发现,只有第一次执行了print(111),后面便不再执行了,后面每次都循环while里的内容。

那为什么会这样呢?实际上是:

yield return是等待的意思,当程序执行到yield return时,会先不执行下面的程序。返回去执行未执行完的程序。

当程序觉得等够了时间,诶,程序就回来执行yield return后面的东西了。

yield return并不是返回到StartCoroutine,yield return是等待。





大家还有什么问题,欢迎在下方留言!



如果你有 技术的问题 项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

以上是关于Unity⭐️当Unity协程遇到while的主要内容,如果未能解决你的问题,请参考以下文章

Unity延时执行的n种方法

unity3d使用协程应该注意啥

Unity延时执行的n种方法,最后一种你知道吗?

Unity自己实现协程

Unity中使用协程进行服务端数据验证手段

如何在 Unity 中仅停止某些协程实例