虽然循环失败了unityscript

时间:2014-11-27 21:47:17

标签: unity3d unityscript

我似乎无法在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); 
}

这就是我目前遇到的问题:它编译,但在运行时冻结。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您无法理解Unity中异步内容的工作原理。

您的while循环需要yield。这是因为Unity程序是单线程的,yield是你如何给其他" coroutines"。

    while (!async.isDone)
    {
        loadingProgress = parseInt(async.progress * 100);
        yield;
    }

以下是有关其工作原理的Unity文档:

http://docs.unity3d.com/Manual/Coroutines.html