En este momento estás viendo ¿Cómo descargo escenas adicionales?

 – Unity

¿Cómo descargo escenas adicionales? – Unity

¿Cómo descargo escenas adicionales?

– UnityAssets3Free

bienvenido , me llamo jorge y hoy os traigo
nueva pregunta

Estoy creando un juego de batalla de tanques que genera aleatoriamente nuevos niveles después de cada ronda. En mi administrador de juegos, estoy tratando de comenzar la ronda con una escena aditiva cargada desde un índice de rango aleatorio y termino descargando la escena y cargando una nueva escena aleatoria. Sin embargo, cada intento que hago resulta en algún tipo de error.

Me han dirigido constantemente a LoadLevelAsync, pero parece que me da más preguntas que nadie parece responder.

Así es como se define actualmente:

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

Con la forma en que se configura este código, parece funcionar bien si el nuevo nivel aleatorio es una repetición del nivel utilizado anteriormente, pero si el nivel llamado es diferente, me dará un error y se bloqueará.

Cualquier consejo sobre a dónde ir desde aquí es muy apreciado. No soy programador de ninguna manera, por lo que se necesitan explicaciones simples pero detalladas. Gracias.

2 respuestas 2

Encontré una solución de trabajo. Quizás todavía sea relevante.

// Get count of loaded Scenes and last index
var lastSceneIndex = SceneManager.sceneCount - 1

// Get last Scene by index in all loaded Scenes
var lastLoadedScene = SceneManager.GetSceneAt(lastSceneIndex)

// Unload Scene
SceneManager.UnloadSceneAsync(lastLoadedScene);

SceneManager.GetSceneAt() – Obtenga la escena en el índice en la lista de escenas cargadas de SceneManager

SceneManager.sceneCount – El número total de escenas actualmente cargadas

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

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

sin mas,espero que te funcione

Deja una respuesta