Простая система событий в Unity

Я пытаюсь использовать систему e, vent в Unity (способ C #), но у меня возникают проблемы с ее реализацией.

В большинстве примеров показан один класс, в котором вы определяете обработчик; затем вы пишете в том же классе функцию, соответствующую сигнатуре обработчика, и вы пишете события как статические

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();
    }
}

Затем в другом классе вы подписываетесь на события, создавая функцию, которая на самом деле что-то делает

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

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

    }
}

Пока проблем нет, но я не уверен, как мне это спроектировать, поэтому любой GameObject определенного типа подпишется на это событие. Например, если у вас есть категория сотрудников GO, которая работает с 8 до 6, и вы создаете их экземпляр во время выполнения; я должен подписаться на основной класс этой категории, или я должен создать скрипт, который я присоединяю к префабу Game Object, который подписывается на событие?

Цель состоит в том, чтобы все сотрудники, которые должны были делать 8–6 смен в спортивном центре, знали, когда начнется событие «день закончен», но я не хочу подписываться на каждый префаб, который я создаю.

Насколько я понимаю, я должен прикрепить сценарий с необходимым кодом на сборном, но я не могу найти практический пример, который показывает, действительно ли это способ сделать это.