不使用线程,假设你可以修改longExecutionFunction
,它看起来像这样:
void longExecutionFunction()
{
mediumExecutionFunction();
mediumExecutionFunction();
while(working)
{
mediumExecutionFunction();
}
}
您可以将其修改为:
IEnumerator longExecutionFunction()
{
mediumExecutionFunction();
yield return null;
mediumExecutionFunction();
yield return null;
while(working)
{
mediumExecutionFunction();
yield return null;
}
}
然后修改调用代码如下:
StartCoroutine(GetSuggestions());
IEnumerator GetSuggestions() {
yield return longExecutionFunction();
//all done!
}
然后,每次更新都会做一件“中等长度的事情”,从而防止游戏挂起。您是否可以以及如何分解内部的工作longExecutionFunction
取决于您在其中的代码。