小编Kyl*_*e G的帖子

在 Unity3d 中使用 IEnumerator 与 IEnumerable 的嵌套协程

我正在使用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)

c# iterator coroutine unity-game-engine

5
推荐指数
1
解决办法
7614
查看次数

标签 统计

c# ×1

coroutine ×1

iterator ×1

unity-game-engine ×1