RequireComponent в Unity3D

Один из приемов быстрой разработки на Unity3D -- использование атрибута RequireComponent. Рассмотрим, как это работает.

Как известно, сценарии с зависимостями от компонентов являются обычным делом в разработке. К примеру, сценарий контроллера игрока в большинстве случаев будет зависеть как от Rigidbody, так и от коллайдеров игрока. Как же максимально безопасно гарантировать наличие всех зависимостей у игрового объекта в процессе исполнения сценария? В Unity3D это можно сделать с помощью атрибута RequireComponent.

Атрибут имеет 3 основные функции:

  1. Обеспечение наличия нужных компонентов у игрового объекта.
  2. Блокировка удаления необходимых компонентов.
  3. Автоматическое добавление нужных компонентов к игровому объекту в том случае, когда к нему прикрепляется сценарий.

Ниже представлен пример кода с применением RequireComponent:

Вышеописанная функциональность существенно увеличивает безопасность кода, одновременно с этим снижая вероятность непредусмотренного исключения пустого указателя в случае попытки получения доступа к недействительным либо несуществующим компонентам. При этом вы можете прикрепить компоненты непосредственно в окне редактора либо получить их посредством методов Awake или Start -- собственно говоря, что и показано в примере выше.

Следует понимать, что подход ускоряет подготовку объектов. Мало того, классы и структуры могут иметь одновременно несколько атрибутов RequireComponent. Достаточно будет указать их в сценарии, а потом всего лишь добавить его в игровой объект — все компоненты окажутся прикреплеными, что очень удобно.

Если же учесть, что компоненты в обычных обстоятельствах никогда не будут недействительными, а в сценарии не надо выполнять проверки на null-значение, то и писать кода надо будет меньше. Разве это не ускоряет разработку?

По материалам статьи "Four Techniques for Faster Unity 3D Development".