Я загружаю сцену с помощью кнопки и передаю аргумент в одноэлемент (от сцены главного меню до игровой сцены). Код выглядит так: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 ");
}