我是一个初学者,我对协程的知识非常有限。 我有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冻结了。我使用协同程序来解决优化问题,因为生成列表会导致冻结。
答案 0 :(得分:1)
如果你想等到一个协同程序直到它完成,你可以将yield return Coroutine1();
放在正文Coroutine2
的第一行,然后把剩下的代码放在那里,这样{{1等待Coroutine2
直到完成,然后它将继续执行其余的代码。
Coroutine1