Sistema de eventos simple en Unity

Estoy tratando de usar el sistema e, vent en Unity (la forma C #), pero tengo problemas para implementarlo.

La mayoría de los ejemplos muestran una clase, donde define el controlador; luego escribe en la misma clase, la función que coincide con la firma del controlador, y escribe los eventos como estáticos

public class EventExample : MonoBehaviour
{
    public delegate void ExampleEventHandler();
    public static event ExampleEventHandler OneDayPassed;

    public static void NextTurn()
    {
        // do stuff then send event
        if (OneDayPassed != null)
            OneDayPassed();
    }
}

Luego, en otra clase, te suscribes a los eventos, creando una función que realmente hace algo

public class EntityWatcher: MonoBehaviour
{
    void Start()
    {
        EventExample.OneDayPassed += this.PrepareNextDay;
    }

    public void PrepareNextDay()
    {
        // Do other stuff that happen after the day is done

    }
}

Hasta ahora no hay problemas, pero no estoy seguro de cómo diseñarlo, por lo que cualquier GameObject de un tipo en particular se suscribirá a este evento. Por ejemplo, si tiene una categoría de personal de GO, que funciona de 8 a 6, y los instancia en tiempo de ejecución; ¿Debería suscribirme en la clase principal de esta categoría, o debería crear un script que adjunte al prefabricado de objetos de juego, que se suscriba al evento?

El objetivo es que todos los miembros del personal que deben hacer un turno de 8 a 6 en el centro deportivo, sepan cuándo se inicia el evento "día terminado", pero no quiero suscribirme a cada prefabricación que instancia.

Según tengo entendido, debería adjuntar un script con el código necesario en el prefabricado, pero no puedo encontrar un ejemplo práctico que muestre si esa es realmente la forma de hacerlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta