等到协程完成后再启动另一个协程[Unity C#]

时间:2018-05-19 10:04:05

标签: c# unity3d coroutine ienumerator

我是一个初学者,我对协程的知识非常有限。 我有Coroutine1生成两个列表和Coroutine2将使用这两个列表。这样做时:

void test ()
{   
    StartCoroutine (Coroutine1);
    StartCoroutine (Coroutine2);
}

仅生成一个列表,导致Coroutine2内部出现错误。 但如果我这样做:

IEnumerator Coroutine1(){
    for (int i = 0; i < numberOfListsToBeGenerated; i++) {
        //generate List
        yield return StartCoroutine(Coroutine2());
    }
}

Unity冻结了。我使用协同程序来解决优化问题,因为生成列表会导致冻结。

1 个答案:

答案 0 :(得分:1)

如果你想等到一个协同程序直到它完成,你可以将yield return Coroutine1();放在正文Coroutine2的第一行,然后把剩下的代码放在那里,这样{{1等待Coroutine2直到完成,然后它将继续执行其余的代码。

Coroutine1