GameObject.GetComponentsInParent
Declaration
public T[] GetComponentsInParent();public T[] GetComponentsInParent(bool includeInactive);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный родитель GameObjects в поиск. |
Возвращаемое значение
T[] Массив, содержащий все соответствующие компоненты типа T.
Описание
Получает ссылки на все компоненты типа T на указанном GameObject и любом родителе GameObject.
Типичное использование этого метода — это вызвать его на ссылке на другой GameObject, чем тот, на котором находится ваш скрипт. Например:myResults = otherGameObject.GetComponentsInParent<ComponentType>()
Однако, если вы пишете код внутри MonoBehaviour класс, ссылку на GameObject перед вызовом можно опустить, чтобы искать в том же GameObject, к которому прикреплён скрипт. В этом случае вы фактически вызываете Component.GetComponentsInParent потому что сам скрипт является типом компонента, но результат такой же, как если бы вы ссылались на сам GameObject. Например:myResults = GetComponentsInParent<ComponentType>()GetComponentsInParent проверяет GameObject, на котором она вызвана впервые, затем рекурсивно вверх через каждый родительский GameObject, пока не найдет соответствующий Компонент типа T не указано.
Только активный родитель GameObjects включается в поиск, если только вы не вызываете метод с includeInactive параметр установлен на true, в этом случае неактивный родитель GameObjects также включается. GameObject, на котором вызван метод, всегда ищется независимо от этого параметра.
Чтобы найти компоненты, прикрепленные к другим GameObjects, вам нужно ссылка на это другое GameObject (или любой компонент, прикрепленный к этому GameObject). Затем вы можете вызвать GetComponentsInParent на эту ссылку.
Примечание: Если запрашиваемый тип является производным от MonoBehaviour и связанный с ним скрипт не может быть загружен, то эта функция возвратит `null` для этого компонента.
В следующем примере получается ссылка на все компоненты соединения шарниров на том же GameObject, что и скрипт, или на любом из его родителей, и если найдена, устанавливается свойство для этих компонентов.
using UnityEngine;
public class GetComponentsInParentExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject and its parents
public GameObject objectToCheck;
void Start() { HingeJoint[] hingeJoints;
hingeJoints = objectToCheck.GetComponentsInParent<HingeJoint>();
if (hingeJoints != null) { foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } else { // Try again, looking for inactive GameObjects HingeJoint[] hingesInactive = objectToCheck.GetComponentsInParent<HingeJoint>(true);
foreach (HingeJoint joint in hingesInactive) { joint.useSpring = false; } } } }
Дополнительные ресурсы: Component, GameObject.GetComponentsInChildren
Declaration
public void GetComponentsInParent(bool includeInactive, List<T> results);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный дочерний объект GameObjects в поиск. |
| результаты | Список, используемый для возвращаемых результатов. |
Описание
Вариант метода GetComponentsInParent, который позволяет вам предоставить свой собственный Список, который будет заполнен результатами.
Это позволяет избежать выделения новых объектов List для каждого вызова метода. Размер списка, который вы предоставляете, изменяется в соответствии с количеством найденных результатов, и любые существующие значения в списке перезаписываются.
using UnityEngine; using System.Collections.Generic;
public class GetComponentsInParentExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject and its parents
public GameObject objectToCheck;
void Start() { List<HingeJoint> hingeJoints = new List<HingeJoint>();
objectToCheck.GetComponentsInParent<HingeJoint>(false, hingeJoints);
if (hingeJoints != null) { foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } else { // Try again, looking for inactive GameObjects List<HingeJoint> hingesInactive = new List<HingeJoint>();
objectToCheck.GetComponentsInParent<HingeJoint>(true, hingesInactive);
foreach (HingeJoint joint in hingesInactive) { joint.useSpring = false; } } } }
Дополнительные ресурсы: Component, GameObject.GetComponentsInChildren
Declaration
public Component[] GetComponentsInParent(Type type, bool includeInactive = false);Параметры
| Параметр | Описание |
|---|---|
| тип | Тип компонента для поиска. |
| includeInactive | Включать ли неактивный родитель GameObjects в поиск. |
Возвращаемое значение
Component[] Массив всех найденных компонентов, соответствующих указанному типу.
Описание
Нетиповая версия этого метода.
Эта версия GetComponentsInChildren не столь эффективна, как версия Generic (выше), так что вы должны использовать ее только в случае необходимости.