【问题标题】:Unity3d not loading scene correctlyUnity3d 无法正确加载场景
【发布时间】:2015-07-22 07:39:46
【问题描述】:

我正在加载一个带有按钮的场景并将一个参数传递给一个单例(从主菜单场景到游戏场景)。代码如下所示:

public void OnPointerClick(PointerEventData data)
    {
        if (data.selectedObject != null)
        {
            string name = Tools.GetLast(data.selectedObject.name, 2);
            selectedChapter = int.Parse(name);
            DataHolder.holder.selectedChapter = selectedChapter;
            Application.LoadLevel("Book_Scene");
        }
    }

我有不同的按钮来加载书籍场景中的不同章节。第 0 章一切正常。其他任何事情,应用程序都会冻结。奇怪的是,书籍场景中的代码似乎可以运行,因为特定章节的叙述开始了,但似乎唯一有效的东西。真正困扰我的是,当我在 Visual Studio 中调试它并逐行使用断点时,一切正常,场景加载到正确的章节等等。此行为未连接到 Visual Studio 或统一编辑器,因为该错误在我所做的 android 构建中仍然存在。我在控制台中也没有错误。 Unity 只是停止响应。

这是播放画外音等的启动方法:

 void Start () {

        currentPageIndex = DataHolder.holder.selectedChapter;
        flag = true;
        if (currentPageIndex == 0)
        {
            for (int i = 0; i < pages.Length; i++)
            {
                CanvasGroup canGroup = pages[i].GetComponent<CanvasGroup>();
                canGroup.alpha = 0.0f;
            }
        }
        else
        {
            if (Language.CurrentLanguage() == LanguageCode.EN)
            {
                //This line gets called since the sound starts playing even during the Editor freeze
                AudioHelper.CreatePlayStackingSound(AudioManager.holder.voiceOversEnglish[currentPageIndex], 1f, "voiceOver");
                // This does not get output to the console.
                Debug.Log("Scene " + Application.loadedLevelName + "is loaded after sound");
            }
            if (Language.CurrentLanguage() == LanguageCode.AR)
            {
                AudioHelper.CreatePlayStackingSound(AudioManager.holder.voiceOversArabic[currentPageIndex], 1f, "voiceOver");
            }
            Transform currPagetext = pages[currentPageIndex].transform.Search("TextPage" + currentPageIndex.ToString());
            currPagetext.gameObject.AddComponent<TextTyper>();
            initPage(currentPageIndex);
        }
        entrance = false;
        done = true;
        direction = true;
        Debug.Log("Scene " + Application.loadedLevelName + "is loaded ");
    }

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    问题解决了。由于某些浮点不精确,do{}while() 循环卡住了。我还是不知道为什么在 OnPointerClick() 中添加断点不会导致循环卡住。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多