Добрый день. Всякий раз, когда создаю на юнити более чем несколько связанных компонентов, возникают проблемы, что один компонент пытается работать с другим, еще не проинициализированным компонентом. Это доходит до абсурда - бывает, всё работает нормально, а после перезапуска сыпятся баги, ибо юнити поменял порядок создания компонентов, и всё теперь нужно перепроверять.
Сам знаю 2 метода решения этой проблемы:
1. Использовать
Script Execution Order Settings. Считаю это ужасным костылем для тех, кто не умеет планировать архитектуру. Ибо добавлять, утрирую, каждый созданный компонент туда и настраивать ему порядок - это не дело.
2. Написать собственный менеджер компонентов, который будет вызывать Init() компонента в определенном порядке, описанном в самом компоненте, как альтернатива Start и Awake. Этот метод недалеко ушел от предыдущего, разве что он более гибкий (каждому компоненту можно написать своё время запуска), и более удобный в использовании. Тоже костыль.
Интересует, какие методы решения данной и подобных проблем существуют не только для юнити, но вообще в программировании?
Как вы решаете эту проблему, каких правил и приемов придерживаетесь?