RequireComponent в Unity3D
Один из приемов быстрой разработки на Unity3D -- использование атрибута RequireComponent. Рассмотрим, как это работает.
Как известно, сценарии с зависимостями от компонентов являются обычным делом в разработке. К примеру, сценарий контроллера игрока в большинстве случаев будет зависеть как от Rigidbody, так и от коллайдеров игрока. Как же максимально безопасно гарантировать наличие всех зависимостей у игрового объекта в процессе исполнения сценария? В Unity3D это можно сделать с помощью атрибута RequireComponent.
Атрибут имеет 3 основные функции:
- Обеспечение наличия нужных компонентов у игрового объекта.
- Блокировка удаления необходимых компонентов.
- Автоматическое добавление нужных компонентов к игровому объекту в том случае, когда к нему прикрепляется сценарий.
Ниже представлен пример кода с применением RequireComponent:
Вышеописанная функциональность существенно увеличивает безопасность кода, одновременно с этим снижая вероятность непредусмотренного исключения пустого указателя в случае попытки получения доступа к недействительным либо несуществующим компонентам. При этом вы можете прикрепить компоненты непосредственно в окне редактора либо получить их посредством методов Awake или Start -- собственно говоря, что и показано в примере выше.
Следует понимать, что подход ускоряет подготовку объектов. Мало того, классы и структуры могут иметь одновременно несколько атрибутов RequireComponent. Достаточно будет указать их в сценарии, а потом всего лишь добавить его в игровой объект — все компоненты окажутся прикреплеными, что очень удобно.
Если же учесть, что компоненты в обычных обстоятельствах никогда не будут недействительными, а в сценарии не надо выполнять проверки на null-значение, то и писать кода надо будет меньше. Разве это не ускоряет разработку?
По материалам статьи "Four Techniques for Faster Unity 3D Development".