Diferencia entre revisiones de «Unity Gestión de escenas»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=Introducción= * Como comenté al [https://wiki.cifprodolfoucha.es/index.php?title=UNITY_El_entorno_de_desarrollo#Ventana_jer.C3.A1rquica principio de esta Wiki] una esce…»)
 
Línea 8: Línea 8:
  
  
 +
[[Imagen:Unity3d_escenas_1.jpg|500px|center]
 +
<small><center>Ejemplo de escena principal de un juego</center></small>
  
  
  
  
 +
<br />
 +
=Creando nuevas escenas=
  
 +
<br />
 +
<gallery caption="Creando nuevas escenas" widths="350" heights="300px" perrow="2">
 +
Image:Unity3d_escenas_2.jpg| Una de las formas es pulsando el botón derecho sobre la carpeta 'Scenes' (normalmente deberían ir ahí) y escogiendo la opción 'Create'=>'Scene'. La daremos un nombre.
 +
Image:Unity3d_escenas_3.jpg| Una vez creado '''pulsaremos dos veces''' sobre la escena para 'cargarla'. Podemos ver cual es la escena 'activa' en la Hiearchy Window.
 +
</gallery>
  
 +
 +
 +
<br />
 +
=Cargando escenas dinámicamente=
 +
 +
* Durante el juego iremos de una escena a otra en función de lo que haga el jugador.
 +
: Lo primero que tenemos que hacer es 'cargar' las escenas que conforman nuestro juego.
 +
: A pesar de que estén creadas a nivel de proyecto, las escenas no forman parte del juego hasta que no se lo indiquemos a Unity.
 +
 +
<gallery caption="Añadiendo escenas al proyecto" widths="350" heights="300px" perrow="2">
 +
Image:Unity3d_escenas_4.jpg| Una vez tenemos abierta una escena, vamos a la opción '''File''' => '''Build Settings'''.
 +
Image:Unity3d_escenas_5.jpg| Pulsamos el botón '''Add Open Scenes'''.
 +
Image:Unity3d_escenas_6.jpg| Al hacerlo se añade la escena abierta. Fijarse que a cada escena le asocia un número. Es el orden en que están añadidas. Podemos cambiarlo si 'arrastramos' una escena y la colocamos en otra posición. Este número puede ser utilizado para indicar que escena queremos cargar desde el juego.
 +
Image:Unity3d_escenas_7.jpg| Repetiremos el proceso por cada escena.<u>No es necesario cerrar la ventana Build Settings para cargar una nueva escena</u>. Si pulsamos dos veces sobre otra escena sin cerrarlo, esta se carga y podemos añadirla al proyecto.
 +
</gallery>
 +
 +
 +
<br />
 +
=Cambiando de escena en los scripts=
 +
 +
* Una vez tenemos las escenas cargadas podemos cambiar de una a otra haciendo uso del [https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html método ScreenManager.LoadScene] de la clase ScreenManager.
 +
: Como parámetro espera recibir el nombre de la escena a cargar o el número asociado a la escena como ya comenté anteriormente.
 +
 +
 +
: En el caso de la pantalla principal podemos crear un script asociado a un Empty GameObject que en función de los eventos de los botones a nivel de la interface gráfica cargue una escena u otra.
 +
<syntaxhighlight lang="java" line enclose="div" highlight="">
 +
public class Principal : MonoBehaviour {
 +
 +
    public void CambiarPantalla(Button button)
 +
    {
 +
        if (button.name.Equals("Jugar"))
 +
        {
 +
            SceneManager.LoadScene("PantallaJuego");
 +
        }
 +
        else if (button.name.Equals("HighScores"))
 +
        {
 +
  .......
 +
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 +
 +
* Para salir del juego debemos llamar al [https://docs.unity3d.com/ScriptReference/Application.Quit.html método Application.Quit()].
  
  

Revisión del 11:51 17 feb 2019

Introducción

  • Como comenté al principio de esta Wiki una escena la podemos identificar como cada una de las pantallas que conforman nuestro juego.
También puede identificarse con diferentes 'fases' que pueda tener nuestro juego, creando nuevos escenarios.


  • Normalmente todo juego tendrá una pantalla Inicial donde aparecen las diferentes opciones de configuración del juego, acceso a High Scores, ayuda,...cada una de estas pantalla conformará una escena de nuestro juego.


[[Imagen:Unity3d_escenas_1.jpg|500px|center]

Ejemplo de escena principal de un juego




Creando nuevas escenas




Cargando escenas dinámicamente

  • Durante el juego iremos de una escena a otra en función de lo que haga el jugador.
Lo primero que tenemos que hacer es 'cargar' las escenas que conforman nuestro juego.
A pesar de que estén creadas a nivel de proyecto, las escenas no forman parte del juego hasta que no se lo indiquemos a Unity.



Cambiando de escena en los scripts

Como parámetro espera recibir el nombre de la escena a cargar o el número asociado a la escena como ya comenté anteriormente.


En el caso de la pantalla principal podemos crear un script asociado a un Empty GameObject que en función de los eventos de los botones a nivel de la interface gráfica cargue una escena u otra.
 1 public class Principal : MonoBehaviour {
 2 
 3     public void CambiarPantalla(Button button)
 4     {
 5         if (button.name.Equals("Jugar"))
 6         {
 7             SceneManager.LoadScene("PantallaJuego");
 8         }
 9         else if (button.name.Equals("HighScores"))
10         {
11    .......
12 
13     }
14 }





-- Ángel D. Fernández González -- (2018).