LoadScene всегда работает в редакторе, но только при первом просмотре в Build: Unity - PullRequest
0 голосов
/ 23 марта 2019

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.

Он работает так же, как и ожидалось в редакторе.

Если кто-нибудь скажет мне, какую (несомненно, простую) ошибку я пропускаю, я был бы очень признателен.

1 Ответ

0 голосов
/ 24 марта 2019

HUZZAR!

Это мой проклятый скрипт DataIO!

По какой-то причине мой вывод из файла Json блокирует продолжение программы!

Я заметилчто версия сборки ждет остановки воспроизведения, прежде чем записать файл на диск;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...