Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado por: Alvaro95 en Diciembre 16, 2018, 10:49:41 PM
Buenas a todos.
Vereis, tengo creado un menu creado a partir de un scene manager en el que tengo metidas 3 escenas, es decir, un menu en el que tengo tres modos de juego, tres escenas.
Cual es el problema, una vez que entro en una escena y regreso al menu, cuando vuelvo a entrar nuevamente en la escena todo sigue en movimiento tal como cuando me sali.
Lo que me interesaria es saber si se puede hacer que una vez que salga al menu y vuelva a entrar en la escena todo este como en el primer momento, que se reiniciria todo basicamente.
SceneManager.UnloadSceneAsync
Hola francoe1
Este es el script que estoy utilizando para cambiar de escenas, son solamente tres escenas.
Como se deberia instalar debidamente el SceneManager.UnloadSceneAsync ?
Por que si lo cambio por el SceneManager.LoadScene, me da error.
Consejo paralelo: Recoge en una variable los strings de índices de cada escena, no uses strings literales. Te basta con definir un Enum con las escenas que tengas para tu juego.
Es mucho más ordenado y efectivo.
Cita de: Alvaro95 date=1546033273Por que si lo cambio por el SceneManager.LoadScene, me da error.
Fijate las signatures del método:
public static AsyncOperation (https://docs.unity3d.com/ScriptReference/AsyncOperation.html)
UnloadSceneAsync(int sceneBuildIndex);
public static AsyncOperation (https://docs.unity3d.com/ScriptReference/AsyncOperation.html)
UnloadSceneAsync(string sceneName);
public static AsyncOperation (https://docs.unity3d.com/ScriptReference/AsyncOperation.html)
UnloadSceneAsync(SceneManagement.Scene (https://docs.unity3d.com/ScriptReference/SceneManagement.Scene.html) scene);
Podrá ser que no devuelve un void(?), ahora retorna un asyncOperation, podrías hacer:
AsyncOperation async;
...
async = UnloadSceneAsync("Scene 1");
No tendrías que usar un Enumerator para usar un Yield?? Creo que así se hacen las funciones asíncronas no?
Cita de: juanma_teso date=1546102822No tendrías que usar un Enumerator para usar un Yield?? Creo que así se hacen las funciones asíncronas no?
me parece que no es necesario, por lo menos desde lo técnico no me suena, aunque no recuerdo la verdad, creo que es bastante usada la corrutina porque siempre está el típico:
AsyncOperation async = SceneManager.LoadSceneAsync("XXX");
while (!async.isDone)
yield return null;
entonces como una vez que cargás no hacés nada hacés el yield y te queda super cómodo esperar en la línea que sigue (además de que más eficiente que preguntar frame a frame).
PD: puse carga pero bueno, para cualquier async es igual