Contenido del Curso
Juego de Lucha en Unity
Juego de Lucha en Unity
Crear Menú Principal
Menú Principal
Script para el Menú Principal
La clase MainUI
es un script simple que proporciona funcionalidad para iniciar el juego y salir de la aplicación. Este script está diseñado para ser utilizado con botones de UI en Unity.
Definición de la Clase y Métodos
El método StatTheGame
está diseñado para iniciar el juego cargando una nueva escena. Específicamente, SceneManager.LoadScene(1)
dirige a Unity a cargar la escena con el índice de construcción 1
, que corresponde a su posición en la Configuración de Construcción.
El método Quit
permite cerrar la aplicación llamando a Application.Quit()
, aunque esta funcionalidad solo es efectiva en una aplicación construida y no dentro del Editor de Unity.
Uso en Unity
Adjuntar el Script
Crea un GameObject (por ejemplo, un GameObject vacío o un elemento de UI).
Adjunta el script MainUI
al GameObject arrastrando el script sobre él o usando el botón Add Component
en el Inspector.
Configuración de Botones de UI
Crea un botón de UI (por ejemplo, GameObject > UI > Button
).
Selecciona el botón y ve al Inspector.
En la sección On Click ()
, haz clic en el botón +
para agregar un nuevo evento.
Arrastra el GameObject con el script MainUI
adjunto al campo de objeto.
Desde el menú desplegable, selecciona MainUI > functionName
.
Gestor de Juego
Script para el Gestor de Juego
La clase GameManager
es responsable de gestionar el estado del juego. Utiliza un patrón singleton para asegurar que solo haya una instancia de GameManager
en el juego, gestiona el estado del juego y transmite los cambios de estado usando eventos.
Definición de Clase y Variables Miembro
Métodos
Método Awake
Propósito: Asegura que solo haya una instancia de GameManager
y evita que se destruya al cargar nuevas escenas.
Patrón Singleton: Verifica si ya existe una instancia. Si es así, destruye el duplicado. De lo contrario, asigna la instancia y marca el objeto para que no se destruya al cargar una nueva escena.
Método Start
Propósito: Inicializa el estado del juego a Playing
cuando el juego comienza y activa el evento onGameStateChanges
.
Método FinishGame
Propósito: Establece el estado del juego a Finished
y activa el evento onGameStateChanges
.
Enum GameStates
Propósito: Define los posibles estados del juego.
Enemigo Reacciona a Cambios en el Estado del Juego
Este método maneja los cambios en el estado del juego. Cuando el estado del juego cambia a Finished
, el estado del enemigo se cambia a idle
.
Panel de Finalización
Script para el Panel de Finalización
La clase FinishPanel
maneja la visualización y funcionalidad del panel de finalización que aparece cuando el juego termina. Este panel proporciona retroalimentación al jugador sobre si ha ganado o perdido y ofrece opciones para volver al menú principal o salir del juego.
Explicación
Métodos
Método Start
Propósito: Se suscribe al evento GameManager.onGameStateChanges
para escuchar cambios en el estado del juego.
Método GameManager_onGameStateChanges
Propósito: Maneja los cambios en el estado del juego. Cuando el estado del juego es Finished
, activa el panel de finalización y llama a OnGameFinished
.
Método OnGameFinished
Propósito: Actualiza el texto del panel de finalización basado en si el jugador está muerto o vivo.
Lógica: Si el jugador está muerto, el método establece el texto en "You lost" en rojo. Si el jugador está vivo, establece el texto en "You Won" en verde.
Método BackToMainMenu
Propósito: Carga la escena del menú principal (índice de construcción 0) cuando se llama. Este método está destinado a ser vinculado a un botón en la interfaz de usuario.
Método Quit
Propósito: Cierra la aplicación cuando se llama. Este método está destinado a ser vinculado a un botón en la interfaz de usuario.
Resumen
La clase FinishPanel
muestra los resultados del final del juego y ofrece opciones para regresar al menú principal o salir. Se suscribe a GameManager.onGameStateChanges
para actualizarse adecuadamente cuando el juego termina, mejorando la experiencia del usuario con comentarios claros y opciones intuitivas.
¡Gracias por tus comentarios!