Component.GetComponentsInParent
Declaration
public T[] GetComponentsInParent();public T[] GetComponentsInParent(bool includeInactive);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный родитель GameObjects в поиск. |
Возвращаемое значение
T[] Массив, содержащий все соответствующие компоненты типа T.
Описание
Получает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент, и любой родитель GameObject.
Типичным использованием этого метода является вызов его из скрипта MonoBehaviour (который сам по себе является типом компонента), чтобы найти ссылки на другие Компоненты или MonoBehaviours, присоединенные к тому же GameObject, что и этот скрипт, или его родительскому GameObjects. В этом случае вы можете вызвать метод без указания предшествующего объекта. Например:myResults = GetComponentsInParent<ComponentType>()
Вы также можете вызвать этот метод на ссылке на другой компонент, который может быть прикреплен к другому GameObject. В этом случае, GameObject, к которому прикреплен этот компонент, и его родительские объекты будут поисканы. Например:myResults = otherComponent.GetComponentsInParent<ComponentType>()
Этот метод проверяет GameObject, на котором он вызывается первым, затем рекурсивно вверх по каждому родительскому GameObject, пока не найдет соответствующий Компонент типа T не указано.
Только активные GameObjects включаются в поиск, если только вы не вызываете метод с includeInactive параметр установлен на true, в этом случае неактивный GameObjects также включается. Это относится к GameObject, на котором вызван метод.
Чтобы найти компоненты, прикрепленные к другим GameObjects, вам нужно ссылка на это другое GameObject (или любой компонент, прикрепленный к этому GameObject). Затем вы можете вызвать GetComponentsInParent на эту ссылку.
См. Component и GameObject справочные страницы класса, описывающие другие варианты GetComponent семейство методов.
В следующем примере получается ссылка на все компоненты соединения шарниров на том же GameObject, что и скрипт, или на любом из его родителей, и если найдена, устанавливается свойство для этих компонентов.
using UnityEngine;
public class GetComponentsInParentExample : MonoBehaviour { public Component[] hingeJoints;
void Start() { // Disable the spring on all HingeJoints // in this game object and all its parent game objects hingeJoints = GetComponentsInParent<HingeJoint>();
foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }
Обратите внимание: Если запрашиваемый тип является производным от MonoBehaviour и связанный с ним скрипт не может быть загружен, то эта функция возвратит `null` для этого компонента.
Declaration
public void GetComponentsInParent(bool includeInactive, List<T> results);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный GameObjects в поиск. |
| результаты | Список, используемый для возвращаемых результатов. |
Описание
Вариант метода GetComponentsInParent, который позволяет вам предоставить свой собственный Список, который будет заполнен результатами.
Это позволяет избежать выделения новых объектов List для каждого вызова метода. Размер списка, который вы предоставляете, изменяется в соответствии с количеством найденных результатов, и любые существующие значения в списке перезаписываются.
Declaration
public Component[] GetComponentsInParent(Type t, bool includeInactive = false);Параметры
| Параметр | Описание |
|---|---|
| t | Тип компонента для поиска. |
| includeInactive | Включать ли неактивный GameObjects в поиск. |
Возвращаемое значение
Component[] Массив всех найденных компонентов, соответствующих указанному типу.
Описание
Нетиповая версия этого метода.
Эта версия GetComponentsInChildren не столь эффективна, как версия Generic (выше), так что вы должны использовать ее только в случае необходимости.