jueves, 13 de marzo de 2014

Unity3D: cargar diferentes escenas, salir y volver atrás

¡Hola de nuevo!

Hace tiempo que tenía pensado en publicar algo para mostrar cómo cambiar directamente de escenas en nuestro juego (o en cualquier otra aplicación).


Para ello, nos basta con escribir la siguiente línea de código:


Application.LoadLevel( "nombre_escena" );

Aunque también podemos utilizar la misma línea, pero cambiando el String que le pasamos, por un int que actúa de índice (acordaos de los índices que le asignábamos a cada escena en el "Build Settings"...).


Application.LoadLevel( indice_escena );

NOTA: para insertar una escena tenemos que hacerlo abriendo la escena que queramos añadir, después vamos a "File" --> "Build Settings" --> "Add Current".

Si por el contrario, lo que queremos es salir/finalizar el juego/aplicación, lo que tenemos que escribir es lo siguiente:

Application.Quit();


Una vez visto todo esto, me vino la siguiente duda: ¿cómo podría hacer que funcionase el botón "back" de mi smartphone para que volviese a la escena/pantalla anterior?

Por defecto la funcionalidad de este botón no viene programada, y depende de nosotros el hacerlo.

Solo tuve que documentarme un poco para saber que a dicho botón se le ha asignado el "KeyCode" de la tecla "escape". 

Por tanto, para hacer que volvamos a la pantalla anterior tenemos que escribir en el método "Update()" del "Script" que le hayamos asignado a nuestra escena lo siguiente:

                                                  if( Input.GetKey( KeyCode.Escape ) )
                                                  {
                                                          Application.LoadLevel("escena_anterior");
                                                  }

Como es normal, si estuviésemos en la escena del comienzo de la aplicación, el contenido de este 'if' tendría que ser "Quit()" en vez de "LoadLevel(...)".

5 comentarios:

  1. pero al volver a la escena anterior no se reiniciaria todo?

    ResponderEliminar
    Respuestas
    1. Según he leído, lo que ocurre cuando haces "LoadLevel" es que todos los objetos del juego que han sido cargados antes de hacer el "load", se destruyen (cubos, luces, fuentes de partículas, etc.).

      Lo que no tiene por qué perderse son los datos que tengas en ese momento. Basta con que tengas una BD para que guardes toda la info justo antes de hacer el load.

      http://docs.unity3d.com/ScriptReference/Application.LoadLevel.html

      Eliminar
  2. Gracias amigo, estoy creando una aplicacion empresarial y era lo unico que me faltaba para que quedare profesional, super esta info, quedaba horrible tener que hacer un boton ATRAS y que se deshabilitara el boton del smartphone,,,, gracias te amo...

    ResponderEliminar
  3. Hola creo que este blog les puede ser de utilidad ahi viene un ejemplo

    http://ingenieriazen.blogspot.mx/2017/05/cargar-escenas-en-unity-5.html

    ResponderEliminar
  4. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar