Agregando funcionalidad a la pantalla de game over
Clase 30 de 34 • Curso de Desarrollo de Videojuegos Móviles con Unity
Resumen
¿Cómo crear un componente de UI Game Over en Unity?
En el mundo de los videojuegos, proporcionar una experiencia de usuario adecuada es clave para mantener a los jugadores involucrados. Uno de los elementos centrales en el ciclo de vida de un juego es la pantalla de "Game Over". Esta clase te guiará en el desarrollo de un componente de UI Game Over en Unity, permitiéndote ofrecer opciones de reinicio o salida del juego de manera profesional y funcional.
¿Cómo se implementa el script UI Game Over?
El componente de UI Game Over es crucial para tu juego, ya que gestiona el comportamiento cuando el jugador ha perdido. Aquí te mostramos cómo puedes implementarlo:
-
Creación del script: Dirígete a la carpeta de scripts, da clic derecho, selecciona crear, luego script de C#. Nombra este nuevo script como
UIGameOver
. Este script será responsable de dotar de funcionalidad a la pantalla de Game Over. -
Importación y definición de propiedades:
- Importa el paquete
TextMeshPro
usando la línea:using TMPro;
. - Define dos propiedades:
public int DisplayedPoints; public TextMeshProUGUI PointsUI;
- Importa el paquete
-
Suscripción a eventos:
- En la función
Start
, suscríbete al eventoonGameStateUpdated
delGameManager
:GameManager.Instance.onGameStateUpdated.AddListener(GameStateUpdated);
- En la función
-
Creación de la corrutina:
- Define la función
GameStateUpdated
donde, si el estado del juego esGameOver
, inicia una corrutina llamadaDisplayPointsCoroutine
:private void GameStateUpdated(NewState) { if (NewState == GameManager.GameState.GameOver) { DisplayedPoints = 0; StartCoroutine(DisplayPointsCoroutine()); } } private IEnumerator DisplayPointsCoroutine() { while (DisplayedPoints < GameManager.Instance.Points) { DisplayedPoints++; PointsUI.text = DisplayedPoints.ToString(); yield return new WaitForFixedUpdate(); } DisplayedPoints = GameManager.Instance.Points; PointsUI.text = DisplayedPoints.ToString(); }
- Define la función
-
Gestión de funciones de botones:
- Implementa las funciones
PlayAgainButtonClick
yExitGameButtonClick
para gestionar los botones de jugar de nuevo y salir:public void PlayAgainButtonClick() { GameManager.Instance.RestartGame(); } public void ExitGameButtonClick() { GameManager.Instance.ExitGame(); }
- Implementa las funciones
¿Cómo se actualiza el GameManager?
Para que el botón de "Play Again" y "Exit Game" sean funcionales, es necesario implementar métodos dentro del GameManager
:
-
Reinicio del juego:
- Crea y completa el método
RestartGame
en elGameManager
:public void RestartGame() { Points = 0; gameState = GameState.InGame; GameStateUpdated(gameState); currentTimeToMatch = 0; }
- Crea y completa el método
-
Función para salir del juego:
- Define
ExitGame
, aunque por el momento puede quedar vacía:public void ExitGame() { }
- Define
¿Cómo se configuran los componentes en Unity?
Con el script implementado y el GameManager
actualizado, procederás a configurar los componentes directamente en Unity:
-
Añadir el componente UI GameOver:
- En la pantalla de UI, agrega el nuevo componente
UIGameOver
.
- En la pantalla de UI, agrega el nuevo componente
-
Configurar eventos onClick de los botones:
-
Para el botón "Play Again":
- Añade un evento
onClick
, arrastra el objetoUIGameOver
y selecciona la funciónPlayAgainButtonClick
.
- Añade un evento
-
Para el botón "Exit Game":
- Añade un evento
onClick
, arrastra el objetoUIGameOver
y selecciona la funciónExitGameButtonClick
.
- Añade un evento
-
Con estos pasos completados, has configurado correctamente el componente de UI Game Over en tu juego de Unity. Ahora, la pantalla de Game Over no solo mostrará los puntos del jugador, sino que también permitirá reiniciar el juego o salir, aumentando así la funcionalidad y robustez del juego. ¡Sigue así y pronto tendrás un producto completamente terminado!