Я так понимаю вы просто не согласны с этой статьёй: habrahabr.ru/post/270005. А также Вы исключили возможность использовать данный пример кода как единую входную точку. Попробуйте оценить этот код с точки зрения: инициализация самого проекта.
1. Да я согласен про велосипед, но речь идет о применении Singleton.
2. Как я понимаю мы обсуждаем работу в рамках Unity3D и желательно видеть результат в инспекторе, а не просто выводить в лог.
3. Данный код позволяет повесить класс на объект и управлять классом через инспектор, а то что предлагаете Вы, не позволяет сделать визуальный дебаг класса.
Идея данного кода состоит в том, что он срабатывает первым и создает окружение вокруг себя, это своего рода единая точка входа. Соответственно все что сработает в Awake/OnEnable получит доступ к данному коду.
Хочется спросить, а чем плохо использовать Singleton по аналогии с DI? Для Unity3D это очень удобный подход. Создаем класс GameManager и прописываем в нем ссылки на нужные объекты (классы), после чего создаем объекты (классы).
2. Как я понимаю мы обсуждаем работу в рамках Unity3D и желательно видеть результат в инспекторе, а не просто выводить в лог.
3. Данный код позволяет повесить класс на объект и управлять классом через инспектор, а то что предлагаете Вы, не позволяет сделать визуальный дебаг класса.
Например:
А если ещё и добавить puplic static с возвратом объекта(класса), то можно получить ещё и короткие ссылки.
Например:
Вот и получилось элегантное решение и возможно вызвать в любой момент GameManager.GetGameController().