Что это: Атрибут [GetComponents] является множественной версией [GetComponent]. Он автоматически находит все компоненты указанного типа на том же GameObject или в его дочерних объектах и помещает ...
Как использовать: см. разделы ниже.
Пространство имен: (global)
Путь: Scripts/PropertyAttribute/InjectAttribute/GetComponentsAttribute.cs
Атрибут [GetComponents] является множественной версией [GetComponent]. Он автоматически находит все компоненты указанного типа на том же GameObject или в его дочерних объектах и помещает их в массив или List.
Это полезно, когда вам нужно работать с группой однотипных компонентов, например, со всеми коллайдерами на составном объекте или со всеми скриптами, управляющими частями одного механизма.
Поместите атрибут над полем, которое является массивом или списком (List<T>) компонентов.
Поиск на том же объекте:
using UnityEngine;
public class Player : MonoBehaviour
{
// Найдет все коллайдеры, прикрепленные к этому GameObject
[GetComponents]
private Collider[] allColliders;
}Поиск в дочерних объектах:
Чтобы найти все компоненты на этом GameObject и на всех его дочерних объектах, передайте true в конструктор атрибута.
using System.Collections.Generic;
using UnityEngine;
public class Cannon : MonoBehaviour
{
// Найдет все скрипты ParticleSystem в дочерних объектах
[GetComponents(true)]
private List<ParticleSystem> muzzleFlashes;
}searchInChildren(bool): Необязательный параметр.false(по умолчанию): Поиск выполняется только на том жеGameObject(эквивалентноGetComponents<T>()).true: Поиск выполняется на этомGameObjectи на всех его дочерних объектах рекурсивно (эквивалентноGetComponentsInChildren<T>()).
- Тип поля: Атрибут работает только с полями, которые являются массивами (
T[]) или списками (List<T>). - Перезапись: Поиск и автозаполнение происходят только в том случае, если поле равно
nullили коллекция пуста (не содержит элементов). Это сделано для того, чтобы случайно не перезаписать ссылки, которые были назначены вручную.