Diferencia entre revisiones de «Unity Gestión de escenas»
Ir a la navegación
Ir a la búsqueda
Ejemplo de escena principal de un juego
(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…») |
|||
| (No se muestran 3 ediciones intermedias del mismo usuario) | |||
| 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. | ||
| + | Image:Unity3d_escenas_8.jpg| También podemos añadir todas las escenas 'de vez' arrastrando las escenas a la ventana de Build Settings. | ||
| + | </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()]. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | '''[https://wiki.cifprodolfoucha.es/index.php?title=Programacion_de_videojuegos_con_UNITY3D#UNIDAD_3:_Creando_videojuego_3D Enlace a la página principal del curso]''' | ||
| + | <br /> | ||
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2018). | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2018). | ||
Revisión actual del 09:47 3 jun 2020
Sumario
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.
Creando nuevas escenas
- 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.
- Añadiendo escenas al proyecto
Cambiando de escena en los scripts
- Una vez tenemos las escenas cargadas podemos cambiar de una a otra haciendo uso del 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.
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 }
- Para salir del juego debemos llamar al método Application.Quit().
Enlace a la página principal del curso
-- Ángel D. Fernández González -- (2018).