我似乎无法在Unity内部使用while循环。无论多么简单,Unity总是在冻结我。
function LoadingLevel (level : int) {
yield;
//progressBar.transform.localScale = Vector3(loadingProgress, 0, 0);
async = Application.LoadLevelAsync(1);
while (!async.isDone) {
loadingProgress = parseInt(async.progress * 100);
}
//Application.LoadLevel(level);
}
这就是我目前遇到的问题:它编译,但在运行时冻结。我做错了什么?
答案 0 :(得分:2)
您无法理解Unity中异步内容的工作原理。
您的while
循环需要yield
。这是因为Unity程序是单线程的,yield
是你如何给其他" coroutines"。
while (!async.isDone)
{
loadingProgress = parseInt(async.progress * 100);
yield;
}
以下是有关其工作原理的Unity文档: