簡體   English   中英

Unity3d無法正確加載場景

[英]Unity3d not loading scene correctly

我正在加載帶有按鈕的場景,並將參數傳遞給單例(從主菜單場景到游戲場景)。 代碼如下:

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中調試它並與斷點逐行進行時,一切正常,場景加載在正確的章節上,依此類推。 由於該錯誤在我所做的android構建中仍然存在,因此此行為未連接到Visual Studio或unity編輯器。 另外,我在控制台中沒有任何錯誤。 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 ");
    }

問題解決了。 由於某些浮點數的不精確性,導致do {} while()循環陷入困境。 我仍然不知道為什么在OnPointerClick()中添加斷點不會導致循環卡住。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM