我正在使用Unity3D的 StartCoroutine 方法,我有一个关于嵌套协程的问题。
通常,嵌套协程可能如下所示:
void Start() { StartCoroutine(OuterCoroutine()); }
IEnumerator OuterCoroutine()
{
//Do Some Stuff . . .
yield return StartCoroutine(InnerCoroutine());
//Finish Doing Stuff . . .
}
IEnumerator InnerCoroutine()
{
//Do some other stuff . . .
yield return new WaitForSeconds(2f);
//Finish Doing that other stuff . . .
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但真的没有必要。可以像这样实现相同的效果:
void Start() { StartCoroutine(OuterCoroutine()); }
IEnumerator OuterCoroutine()
{
//Do Some Stuff . . .
IEnumerator innerCoroutineEnumerator = InnerCoroutine().GetEnumerator();
while(innerCoroutineEnumerator.MoveNext())
yield return innerCoroutineEnumerator.Current;
//Finish Doing Stuff . …Run Code Online (Sandbox Code Playgroud)