Как выгрузить аддитивные сцены? - PullRequest
1 голос
/ 22 апреля 2019

Я играю в танковую битву, которая случайным образом генерирует новые уровни после каждого раунда. В моем игровом менеджере я пытаюсь начать раунд с аддитивно загруженной сцены из индекса случайного диапазона, а затем закончить выгрузкой сцены и последующей загрузкой в ​​новой случайной сцене. Однако каждая попытка, которую я делаю, приводит к той или иной форме ошибки.

Меня постоянно направляли в LoadLevelAsync, но мне кажется, что это просто дает мне больше вопросов, на которые никто, похоже, не отвечает.

Вот как это в настоящее время выложено:

//Load random level scene
        int index = Random.Range(2, 4);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");


//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(index);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");

С учетом того, как установлен этот код, кажется, что он работает нормально, если новый случайный уровень является повторением ранее использованного уровня, но если вызываемый уровень отличается, то он выдает ошибку и вылетает.

Любой совет о том, куда идти отсюда, высоко ценится. Я ни в коем случае не программист, поэтому необходимы простые, но подробные объяснения. Спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019
//Load random level scene
        int index = Random.Range(2, 4);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);

Suppose if here 'index' number is 3 and scene 3 is loaded.ok no problem.

//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(index);

And here 'index' number is generate again such as 2.You want to unlode scene 2 but is not there thats the problem.

Solution :-

//Load random level scene
        int index = Random.Range(2, 4);
        int lodedScene = index;
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");


//Unload current scene and load new random level scene

        int index = Random.Range(2, 4);
        SceneManager.UnloadSceneAsync(lodedScene);
        SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
        Debug.Log("SceneLoaded");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...