Resumen

¿Qué son los eventos en programación de videojuegos?

Los eventos son un aspecto fundamental en la programación de videojuegos. Actúan como notificaciones o señales enviadas a múltiples objetos suscritos para informarles que algo ha sucedido. En el contexto de un videojuego, los eventos nos permiten comunicar cambios o acciones a distintos elementos del entorno de manera eficiente. En esta clase exploramos cómo se utilizan para notificar la muerte de un personaje dentro del juego.

¿Cómo configuramos un evento en Unity?

Para configurar un evento en Unity, comenzamos creando un script que gestione la vida del personaje, llamado PlayerLife. Este será el encargado de determinar cuándo el personaje muere, en este caso, al colisionar con un enemigo.

// Script de ejemplo para gestionar la vida del jugador
public class PlayerLife : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        if (collision.CompareTag("Enemy"))
        {
            GameManager.PlayerKilled();
        }
    }
}

¿Cómo implementar la lógica en GameManager para manejar eventos?

Dentro del GameManager, implementamos la lógica necesaria para manejar el evento de la muerte del jugador. Creamos un método público que será invocado por el script PlayerLife.

public class GameManager : MonoBehaviour
{
    public static event Action PlayerDeath;

    public static void PlayerKilled()
    {
        if (PlayerDeath != null)
        {
            PlayerDeath.Invoke();
        }
    }
}

Este método verifica si hay algo suscrito al evento PlayerDeath y lo invoca si es así. Esto permite que muchos objetos en el juego reciban la notificación.

¿Cómo suscribir otros objetos al evento?

Para suscribir objetos adicionales al evento, usamos el método Start() de los scripts respectivos. Por ejemplo, se puede suscribir un método fadein de otro script al evento PlayerDeath.

public class FadeIn : MonoBehaviour
{
    void Start()
    {
        GameManager.PlayerDeath += FadeInEffect;
    }

    void FadeInEffect()
    {
        // Código para el efecto de fade in
    }
}

¿Cómo se verifica el funcionamiento de los eventos?

Es crucial verificar que los eventos sean invocados y que las funciones suscritas se realicen correctamente. Al ejecutar el juego, al morir el personaje, deberíamos observar que todos los métodos suscritos al evento PlayerDeath se activen.

¿Qué se debe hacer cuando el juego termina?

Cuando el juego detecta que el jugador ha muerto, se despliega una pantalla de Game Over. Creamos una UI que contiene un panel con un mensaje y un botón para retornar al menú principal.

  1. Creación del panel de Game Over:

    • Añade un Panel en la UI.
    • Cambia el ScaleMode del Canvas a ScaleWithScreenSize.
    • Dentro del panel, incluye un TextMeshPro que diga "GameOver".
    • Añade un botón que diga "Menu" posicionado en la parte inferior.
  2. Ajustes finales:

    • Remueve la imagen predeterminada del panel.
    • Configura el color del panel a un tono rojo.
    • Asocia el panel al espacio específico en el GameManager.

Finalmente, aseguramos que el jugador tenga el script PlayerLife correctamente asignado y ejecutamos el juego para validar la funcionalidad. Así, podemos observar cómo múltiples funciones suscritas a un evento se ejecutan simultáneamente, facilitando la comunicación entre objetos sin dependencias directas.

¡No te pierdas la próxima clase, donde hablaremos sobre una introducción a los patrones de diseño!