我理解协程的原理.我知道如何让标准StartCoroutine/ yield return模式在Unity中的C#中工作,例如调用一个方法返回IEnumeratorvia StartCoroutine并在该方法中执行某些操作yield return new WaitForSeconds(1);,等待一秒,然后执行其他操作.
我的问题是:幕后真的发生了什么?什么是StartCoroutine真的?什么IEnumerator是WaitForSeconds恢复?如何StartCoroutine将控制权返回到被调用方法的"其他"部分?所有这些如何与Unity的并发模型相互作用(在不使用协同程序的情况下,许多事情同时发生)?
我在Unity工作,但这只是一个C#问题所以我希望这是发布这个问题的正确部分.无论如何,我仍然无法在脑中看到脚本的执行,特别是当有多个运行时它们都有不同的功能.
最近因为我将Update,FixedUpdate和Coroutine添加到我的"何时运行"列表中而变得更加复杂?更新和修复更新我得到了要点.
至于Coroutine,我基本上理解它是一种功能,可以让我更准确地控制时间.这是我知道我能做的唯一方法"收益返回新的WaitForSeconds(i);"
我的问题更多的是他们的执行顺序.例如,如果我从更新调用协程(每帧运行一次)并且协程有一个waitforseconds(10),那么将暂停执行所有脚本?是否有一个中央时钟运行一切?在等待结束之前,更新是否会再次运行?如果我有另一个脚本,其中包含一个包含不同协程的更新函数,并且两个协同程序同时运行,该怎么办?
也许我是模糊的.难以解释.我已经在网上阅读了一些关于协同程序的信息,但没有任何东西可以用我可以想象的方式来解释它.