Un patrón útil es representar eventos del juego de forma centralizada.

Ejemplos:

JugadorMuerto
MonedasCambiaron
MisionCompletada
JuegoPausado

Evento C#

public static event Action<int>
    OnCoinsChanged;

Invocar:

OnCoinsChanged?.Invoke(monedas);

Escuchar:

void OnEnable()
{
    Economy.OnCoinsChanged += ActualizarUI;
}

void OnDisable()
{
    Economy.OnCoinsChanged -= ActualizarUI;
}

Ventaja

Evita referencias directas innecesarias.

Precaución

Demasiados eventos globales también hacen difícil seguir el flujo del programa.

Resumen rápido

Eventos para notificar cambios sin acoplar sistemas directamente.