Unity⭐️当Unity协程遇到while

2024-08-16 08:30:31 浏览数 (3)

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

那就是这句话:

为什么说这句话不对呢

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

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

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

代码语言:javascript复制
private void Start()
{
    StartCoroutine(CalculateFramesPerSecond());
    print(111);
}
 
private IEnumerator CalculateFramesPerSecond()
{
    while (true)
    {
        yield return new WaitForSecondsRealtime(1.0f);
        print(222);
    }
}

但实际是这样嘛?

实际只输出了:

代码语言:javascript复制
111
222
222
222
...

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

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

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

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

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

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

0 人点赞