2015-07-22 3 views
0

Я загружаю сцену с помощью кнопки и передаю аргумент в одноэлемент (от сцены главного меню до игровой сцены). Код выглядит так:Unity3d не правильно загружает сцену

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. Все остальное и приложение зависает. Самое странное, что код из книжной сцены, кажется, запускается, поскольку начинается повествование для конкретной главы, но это единственное, что работает. Меня действительно беспокоит то, что когда я отлаживаю его в визуальной студии и иду за строкой с точками прерывания ВСЕ РАБОТЫ, ИНОГДА, сцена загружается в правильную главу и так далее. Это поведение не связано с визуальной студией или редактором единства, так как ошибка сохраняется в сборке Android. Также я не вижу ошибок в консоли. Единство просто перестает отвечать.

Это метод запуска, который играет голос снова и так далее:

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 "); 
    } 

ответ

0

Проблема решена. Существует {} while() цикл, который застревает из-за некоторой неточности с плавающей запятой. Я все еще не знаю, почему добавление точки останова в OnPointerClick() не приводит к зацикливанию цикла.

Смежные вопросы