Component.GetComponentInChildren
Declaration
public T GetComponentInChildren(bool includeInactive = false);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный дочерний объект GameObjects в поиск. |
Возвращаемое значение
T Компонент соответствующего типа T, в противном случае null, если Компонент не найден.
Описание
Получает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любой дочерний компонент GameObject.
Типичным использованием этого метода является вызов его из скрипта MonoBehaviour (который сам по себе является типом компонента), чтобы найти ссылки на другие Компоненты или MonoBehaviours, прикрепленные к тому же GameObject, что и этот скрипт, или к его дочернему GameObjects. В этом случае вы можете вызвать метод без указания предшествующего объекта. Например:myResults = GetComponentInChildren<ComponentType>()
Вы также можете вызвать этот метод на ссылке на другой компонент, который может быть прикреплен к другому GameObject. В этом случае, GameObject, к которому прикреплен этот компонент, и его дочерние объекты будут поисканы. Например:myResults = otherComponent.GetComponentInChildren<ComponentType>()
Этот метод проверяет GameObject, на котором он вызывается первым, затем рекурсивно переходит ко всем дочерним GameObjects, используя поиск по глубине, пока не найдет соответствующий Компонент типа T не указано.
Только активные дочерние GameObjects включаются в поиск, если только вы не вызываете метод с includeInactive параметр установлен на true, в этом случае включаются также неактивные дочерние GameObjects. GameObject, на котором вызван метод, всегда ищется независимо от этого параметра.
Примечание: GetComponentInChildren возвращает только первый найденный соответствующий компонент, и порядок проверки компонентов на любом индивидуальном GameObject не определен. Поэтому, если есть более одного указанного типа, который может соответствовать любому индивидуальному GameObject, и вам нужно найти конкретный, вы должны использовать Component.GetComponentsInChildren и проверить список возвращенных компонентов, чтобы определить тот, который вы хотите.
Чтобы найти компоненты, прикрепленные к другим GameObjects, вам нужно ссылка на это другое GameObject (или любой компонент, прикрепленный к этому GameObject). Затем вы можете вызвать GetComponentInChildren на эту ссылку.
См. Component и GameObject справочные страницы класса, описывающие другие варианты GetComponent семейство методов.
Следующий пример получает ссылку на компонент соединения шарнирного соединения на том же GameObject, что и скрипт, или на любом из его дочерей, и если найдена, устанавливает свойство для этого компонента соединения шарнирного соединения.
using UnityEngine;
public class GetComponentInChildrenExample : MonoBehaviour { void Start() { HingeJoint hinge = GetComponentInChildren<HingeJoint>();
if (hinge != null) { hinge.useSpring = false; } else { // Try again by including inactive GameObjects. hinge = GetComponentInChildren<HingeJoint>(true);
if (hinge != null) hinge.useSpring = false; } } }
Обратите внимание: Если запрашиваемый тип является производным от MonoBehaviour и связанный с ним скрипт не может быть загружен, то эта функция возвратит `null` для этого компонента.
Declaration
public Component GetComponentInChildren(Type t, bool includeInactive);public Component GetComponentInChildren(Type t);Параметры
| Параметр | Описание |
|---|---|
| t | Тип компонента для поиска. |
| includeInactive | Включать ли неактивный дочерний объект GameObjects в поиск. |
Возвращаемое значение
Компонент Компонент соответствующего type, в противном случае null, если Компонент не найден.
Описание
Это нетиповая версия данного метода.
Эта версия GetComponentInChildren не столь эффективна, как версия Generic (выше), так что вы должны использовать ее только в случае необходимости.
using UnityEngine;
public class GetComponentInChildrenExample : MonoBehaviour { void Start() { HingeJoint hinge = GetComponentInChildren(typeof(HingeJoint)) as HingeJoint;
if (hinge != null) { hinge.useSpring = false; } else { // Try again by including inactive GameObjects. hinge = GetComponentInChildren(typeof(HingeJoint), true) as HingeJoint;
if (hinge != null) hinge.useSpring = false; } } }