LoadScene работает в Unity Editor должным образом.
В Build он корректно загружает сцены 1, 2 и 3 при желании, но не загружает 1 или 2 снова из 3.
Изначально у меня было несколько служебных скриптов в виде немонобихвых классов со статическими функциями. Скрипт SceneManagement был одним из них.
Все работало (или не работало), как описано в приведенной выше проблеме.
В редакторе все работало, как и ожидалось, но в Build я смог добраться только до сцены 3 (EndMenu) и не смог вернуться к сценам 1 или две (StartMenu и Match соответственно)
Я только что изменил все свои служебные скрипты на классы монобихи-поведения, создал игровой объект DDOL в предзагрузочной сцене и повесил на него свои служебные скрипты.
Я надеялся, что именно мое непонимание доступа к немоно-классам стало причиной проблемы, которую я раньше не испытывал.
Оказывается, мой сценарий не работает с использованием всех сценариев в сценах.
LoadLevel.cs
Currently Monobehaviour script component on the DDOL Gameobject
public class LoadLevel : MonoBehaviour {
public void LoadScene(int p_LevelIndex)
{
Debug.Log("Lead Level Called");
SceneManager.LoadScene(p_LevelIndex, LoadSceneMode.Single);
}
}
EndGameMenu.cs
Component of the Canvas Object in the game-over screen
public class EndMenuFunctionality : MonoBehaviour {
// This is how I grab the various Utility scrips from the DDOL gameobject
// Non of the Errors register in-editor
private void Awake()
{
GameObject singleton = GameObject.Find("Singleton");
if (singleton != null)
{
loader = singleton.GetComponent<LoadLevel>();
statCarrier = singleton.GetComponent<GameStatCarrier>();
display = singleton.GetComponent<DisplayUtility>();
readWrite = singleton.GetComponent<DataIO>();
}
else Debug.LogError("EndMenu Cannot Find Singleton Scripts!");
AssignStatValuesToDisplay();
}
// I added these string additions to the Button Functions so i could see in the build which functions are called.
public void OnPressNewGame()
{
noDataWarning.text += "New Game Press Registered @ End Menu";
PushCurentStatsToLast();
loader.LoadScene(2);
}
public void OnPressReturnToMain()
{
noDataWarning.text += "Return Press Registered @ End Menu";
PushCurentStatsToLast();
loader.LoadScene(1);
}
}
По сути, когда у меня были эти служебные сценарии в качестве не моноблочных сценариев, и я получал доступ к их статическим функциям через
ScriptName.FunctionName ()
ИЛИ ЖЕ
как показано выше со всеми сценариями в сцене и созданием ссылок на объекты,
Я не понимаю, почему скрипт LoadLevel в Build загружает:
(Preload.scene), StartMenu.scene, Match.scene и EndMenu.scene
но затем отказывается загружать StartMenu.scene или Match.scene из EndMenu.scene.
Он работает так же, как и ожидалось в редакторе.
Если кто-нибудь скажет мне, какую (несомненно, простую) ошибку я пропускаю, я был бы очень признателен.