Jump to content
UnitySpain
Alvaro95

"Reinicio de escenas"

Recommended Posts

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.

Share this post


Link to post
Share on other sites

Hola francoe1

 

Este es el script que estoy utilizando para cambiar de escenas, son solamente tres escenas.

menus.png

Como se deberia instalar debidamente el SceneManager.UnloadSceneAsync  ?

Por que si lo cambio por el SceneManager.LoadScene, me da error.

Edited by Alvaro95

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
18 hours ago, Alvaro95 said:

Por que si lo cambio por el SceneManager.LoadScene, me da error.

Fijate las signatures del método:

public static AsyncOperation UnloadSceneAsync(int sceneBuildIndex);
public static AsyncOperation UnloadSceneAsync(string sceneName);
public static AsyncOperation UnloadSceneAsync(SceneManagement.Scene scene);
 
Podrá ser que no devuelve un void(?), ahora retorna un asyncOperation, podrías hacer:
AsyncOperation async;

...

async = UnloadSceneAsync("Scene 1");

 

Share this post


Link to post
Share on other sites
10 hours ago, juanma_teso said:

No 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

Edited by lightbug

Share this post


Link to post
Share on other sites

×
×
  • Create New...