GameObject.GetComponentInParent
Declaration
public T GetComponentInParent(bool includeInactive = false);Параметры
| Параметр | Описание |
|---|---|
| includeInactive | Включать ли неактивный родитель GameObjects в поиск. |
Возвращаемое значение
T Компонент соответствующего типа T, в противном случае null, если соответствующий Компонент не найден.
Описание
Получает ссылку на компонент типа T на указанном GameObject или любом родителе GameObject.
Этот метод проверяет GameObject, на котором он вызывается первым, затем рекурсивно вверх по каждому родительскому GameObject, пока не найдет соответствующий Компонент указанного типа T.
Только активный родитель GameObjects включается в поиск, если только вы не вызываете метод с includeInactive параметр установлен на true, в этом случае неактивный родитель GameObjects также включается. GameObject, на котором вызван метод, всегда ищется независимо от этого параметра.
Типичное использование этого метода — это вызвать его на ссылке на другой GameObject, чем тот, на котором находится ваш скрипт. Например:myResults = otherGameObject.GetComponentInParent<ComponentType>()
Однако если вы пишете код внутри класса MonoBehaviour, предшествующую ссылку на GameObject можно опустить, чтобы искать в том же GameObject, к которому прикреплён скрипт, и в его родителях. В этом случае вы фактически вызываете Component.GetComponentInParent потому что сам скрипт является типом компонента, но результат такой же, как если бы вы ссылались на сам GameObject. Например:myResults = GetComponentInParent<ComponentType>()GetComponentInParent возвращает только первый найденный соответствующий компонент, и компоненты не проверяются в определенном порядке. Если есть несколько компонентов указанного типа и вам нужно найти конкретный, вы должны использовать Component.GetComponentsInParent и проверить список возвращенных компонентов, чтобы определить тот, который вы хотите.
Чтобы найти компоненты, прикрепленные к другим GameObjects, вам нужно ссылка на это другое GameObject (или любой компонент, прикрепленный к этому GameObject). Затем вы можете вызвать GetComponentInParent на эту ссылку.
Примечание: Если запрашиваемый тип является производным от MonoBehaviour и связанный с ним скрипт не может быть загружен, то эта функция возвратит null для этого компонента.
В следующем примере получается ссылка на компонент шарнирного соединения на ссылке GameObject или на любом из его родителей, и если она найдена, устанавливается свойство на этом компоненте шарнирного соединения.
using UnityEngine; using System.Collections;
public class GetComponentInParentExample : MonoBehaviour { // Disable the spring on the first HingeJoint component found on the referenced GameObject or any of its parents
public GameObject objectToCheck;
void Start() { HingeJoint hinge = objectToCheck.GetComponentInParent<HingeJoint>();
if (hinge != null) { hinge.useSpring = false; } } }
Дополнительные ресурсы: Component, GameObject.GetComponentsInChildren
Declaration
public Component GetComponentInParent(Type type);public Component GetComponentInParent(Type type, bool includeInactive);Параметры
| Параметр | Описание |
|---|---|
| тип | Тип компонента для поиска. |
| includeInactive | Включать ли неактивный родитель GameObjects в поиск. |
Возвращаемое значение
Компонент Компонент соответствующего type, в противном случае null, если соответствующий Компонент не найден.
Описание
Нетиповая версия этого метода.
Эта версия GetComponentInParent не столь эффективна, как версия Generic (выше), так что вы должны использовать ее только в случае необходимости.
using UnityEngine; using System.Collections;
public class GetComponentInParentExample : MonoBehaviour { // Disable the spring on the first HingeJoint component found on the referenced GameObject or any of its parents
public GameObject objectToCheck;
void Start() { HingeJoint hinge = objectToCheck.GetComponentInParent(typeof(HingeJoint)) as HingeJoint;
if (hinge != null) { hinge.useSpring = false; } } }