sábado, 9 de junio de 2018

Menu Ingame


RESUMEN FUNCIONAMIENTO
El ejercicio funcionará así: Comenzamos con la pantalla de juego, y si pulsamos el botón Home nos llevará al Menú Principal. En este menú tendremos tres botones con la opción de: Play, que nos llevará de nuevo al juego; Exit, que hará que se cierre la aplicación y Options, que nos llevará al Menú Opciones. En él tendremos un Slider con el que podremos controlar el sonido, y un botón para volver al Menú Principal.

Los botones funcionarán de la siguiente manera: Se hará click en ellos e inmediatamente estos mandarán la información al Manager a través de un evento global; en el Manager, ese evento hará de transición hacia un último estado que hará las acciones pertinentes.

PREPARACIÓN 
HOME
Para comenzar, y al tratarse de elementos de la interfaz, necesitaremos un Canvas que nos enseñe gráficamente lo que necesitamos.
Canvas -> CanvasHome
Dentro de ese Canvas añadiremos 1 botón, en el cual añadiremos en su Inspector un componente PlayMaker U Gui Component Proxy
BotonHome -> Sprite -> FotoHome
También necesitaremos el Manager que se encargará de controlar todos los estados y acciones de los botones.
Empty Object  -> ManagerMenu

MENUPRINCIPAL
Cavas -> CanvasMenu
  • Text -> TextoMenu
  • En este caso también necesitamos un componente “PlayMaker U Gui Component Proxy” en los botones
  • BotonPlay -> TextoPlay
  • BotonOpciones -> TextoOpciones
  • BotonExit -> TextoExit

MENUOPCIONES
Canvas -> CanvasMenuOpciones
Text -> TextoMenuOpciones
Como en los botones anteriores, también necesitamos el mismo componente.
Boton -> BotonVolver -> TextoVolver
A este menú le añadiremos también un Slider para controlar el volumen.
Slider -> SliderVolumen

BOTONHOME
El botón Home, al igual que los demás botones, necesitará dos estados: uno que permita, al ser clickando, pasar al siguiente estado y otro que avise al Manager a través de un Evento para que el botón haga su función.

ESTADO 1: Esperando Click
En este estado simplemente añadiremos una transición UGUI / ON CLICK, con la que pasaremos al siguiente estado

ESTADO 2: AvisandoManager
Este estado se encargará de informar al manager de que el botón ha sido clickando, por lo que añadiremos una acción “Send Event” hacia el Manager.
  • Event Target -> Game Object -> Specify Game Object -> Manager
  • Send Event -> Global Events -> GOHOME

BOTONPLAY OPTIONS EXIT VOLVER
Cuando ya hayamos terminado de “programar” este botón, lo duplicamos para hacer los dos botones más que necesitamos, teniendo cuidado de elegir el Evento que corresponde a cada estado:
  • BotonPlay -> “GOPLAY
  • BotonOptions -> “GOOPTIONS
  • BotonExit -> “GOEXIT
  • BotonVolver -> “GOBACK


MANAGER
Como anteriormente hemos mencionado, el Manager se encargará de llevar a cabo las funciones de los botones. Es por eso que debemos crear, primero, un estado que reciba los Eventos y después añadir cinco estados más correspondientes a los cinco botones.

ESTADO 1: EsperandoEvento
Este estado solo necesitará 5 transiciones, correspondientes a los cinco eventos creados.
“GOHOME”, “GOPLAY”, “GOOPTIONS”, “GOEXIT” y “GOBACK”

ESTADO 2: Home
Este estado tendrá la función de hacer que aparezca el Menú Principal. Para ello le tenemos que añadir dos acciones, que se encargarán de hacer aparecer el Menú Principal sin que se solape con el Home. Estas acciones serán de tipo “Activate Game Object”

Esta primera acción se encargará de desactivar el CanvasHome para poder dar paso al Menú Principal.
  • Game Object -> Specify Game Object -> CanvasHome
  • Activate -> No marcar casilla
La se encargará entonces de activar el CanvasMenu para que lo podamos ver e interactuar con él.
  • Game Object -> Specify Game Object -> CanvasMenu
  • Activate -> Marcar casilla

ESTADO 3: Play
Al igual que el estado anterior, este se encargará de activar y desactivar objetos.
Sin embargo, al contrario que en el estado Home, en este se desactivará el CanvasMenu y se activará el CanvasHome.

ESTADO 4: Options
Utilizando el mismo mecanismo de los estados anteriores, este estado utilizará las dos mismas acciones Activate Game Object para desactivar el CanvasMenu y activar el CanvasMenuOpciones.

ESTADO 5: Volver
Este estado, al ser utilizado para volver al Menú Principal, activará el CanvasMenu y desactivará el CanvasMenuOpciones.

ESTADO 6: Exit
Este ultimo estado, sin embargo, no posee ninguna acción de las anteriores, puesto que no activa ni desactiva nada, sino que se encarga de cerrar la aplicación del todo. Para ello existe la acción “Application Quit”

Para finalizar, añadimos a todos los estados correspondientes a los botones una transición “FINISHED”.

MENUOPCIONES
Como ya hemos programado el botón volver, solo nos queda hacer que funcione el Slider. 

SLIDER
El primer paso para poder controlar el volumen de la música es, obviamente, tener música. Una vez importado el archivo de audio, necesitamos una fuente desde donde emane el sonido (Source) y unos “oídos” que lo escuchen (Listener).
Debido a que necesitamos añadir estos dos componentes a un objeto que nos permita que la música no se desactive al cambiar de menú, debemos aplicarla al Inspector de un objeto que esté siempre activo. Este será el Manager.

Una vez finalizado este paso, comenzaremos a programar el Slider. Para ello solo necesitaremos un estado que se encargará de aumentar o disminuir el volumen de la música.

ESTADO 1: Ajustando volumen
El Slider tiene una propiedad que le permite moverse entre dos valores determinados; esta propiedad se llama “Value”, y es la con la que deberemos jugar para subir y bajar la música. 

Para ello necesitamos una acción que nos permita jugar con ese valor específicamente, y esa acción es una “Get Property”. En ella guardaremos la información del Value en una nueva Variable de tipo Float (que nos permitirá usar decimales); esta variable se llamará “Volumen
  • Target Object -> Slider (Script)
  • Property -> Value
  • Store Float -> New Variable -> Volumen

A continuación necesitamos añadir una acción que nos ayude a relacionar el objeto desde donde emana la música (Manager) con la variable que controla el volumen (Volumen). Esta será “Set Audio Volume”
  • Game Object -> Specify Game Object -> Manager
  • Volume -> Volumen
  • Every Frame -> Marcar casilla

Este estado, al necesitar un bucle para funcionar, puede dar errores. Para evitarlo debemos añadir una acción “Next Frame Event”, que necesitará un Evento para saber cuándo aplicarse. 
  • Send Event -> FINISHED

Para finalizar el estado, añadimos una Transición FINISHED.


TOQUE FINAL

Para que todo funcione correctamente, debemos desactivar en el Inspector los Canvas “Menú” y “MenuOpciones”, para que el primer menú que aparezca cuando comience el juego sea el de Home.