Skip to content

Latest commit

 

History

History
62 lines (40 loc) · 3.37 KB

File metadata and controls

62 lines (40 loc) · 3.37 KB

[GetComponents]

Что это: Атрибут [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 или коллекция пуста (не содержит элементов). Это сделано для того, чтобы случайно не перезаписать ссылки, которые были назначены вручную.