【问题标题】:While loop failing unityscript虽然循环失败unityscript
【发布时间】:2014-11-28 06:32:42
【问题描述】:

我似乎无法让 while 循环在 Unity 中为我工作。无论多么简单,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); 
}

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

【问题讨论】:

  • 我看到你在我回答这个问题后一直在线。如果它解决了您的问题,您应该单击答案旁边的复选标记。执行此操作时,系统会将问题标记为已回答。
  • 那么答案是否解决了您的问题?如果您不接受答案,人们会注意到并停止回答您的问题。
  • 大声笑,是的,它已修复,谢谢

标签: unity3d unityscript


【解决方案1】:

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

您的while 循环需要yield。这是因为 Unity 程序是单线程的,yield 是您将时间留给其他“协程”的方式。

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多