Los eventos permiten que un sistema avise que ocurrió algo sin conocer directamente quién va a reaccionar.

Ejemplo

using System;

public class PlayerHealth : MonoBehaviour
{
    public event Action<int> OnHealthChanged;

    private int vida = 100;

    public void RecibirDaño(int daño)
    {
        vida -= daño;

        OnHealthChanged?.Invoke(vida);
    }
}

Escuchar evento

void OnEnable()
{
    playerHealth.OnHealthChanged += ActualizarUI;
}

void OnDisable()
{
    playerHealth.OnHealthChanged -= ActualizarUI;
}

Ventaja

PlayerHealth no necesita conocer directamente al HUD.

Ejemplo conceptual

PlayerHealth
   ↓ evento
HUD

PlayerHealth
   ↓ mismo evento
Audio

PlayerHealth
   ↓ mismo evento
Effects

Resumen rápido

event Action
event Action<T>
?.Invoke(...)