Unity 6.3
0 онлайн 3 гостей 3 в системе
Вход

Component.GetComponentInParent

Declaration

public T GetComponentInParent();
public T GetComponentInParent(bool includeInactive = false);

Параметры

Параметр Описание
includeInactive Включать ли неактивный родитель GameObjects в поиск.

Возвращаемое значение

T Компонент соответствующего типа T, в противном случае null, если Компонент не найден.

Описание

Получает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любой родитель GameObject.

Типичным использованием этого метода является вызов его из скрипта MonoBehaviour (который сам по себе является типом компонента), чтобы найти ссылки на другие Компоненты или MonoBehaviours, присоединенные к тому же GameObject, что и этот скрипт, или его родительскому GameObjects. В этом случае вы можете вызвать метод без указания предшествующего объекта. Например:

myResults = GetComponentInParent<ComponentType>()

Вы также можете вызвать этот метод на ссылке на другой компонент, который может быть прикреплен к другому GameObject. В этом случае, GameObject, к которому прикреплен этот компонент, и его родительские объекты будут поисканы. Например:

myResults = otherComponent.GetComponentInParent<ComponentType>()

Этот метод проверяет GameObject, на котором он вызывается первым, затем рекурсивно вверх по каждому родительскому GameObject, пока не найдет соответствующий Компонент типа T не указано.

Только активные GameObjects включаются в поиск, если только вы не вызываете метод с includeInactive параметр установлен на true, в этом случае неактивный GameObjects также включается. Это относится к GameObject, на котором вызван метод.

Примечание: GetComponentInParent возвращает только первый найденный соответствующий компонент, и порядок проверки компонентов на любом индивидуальном GameObject не определен. Поэтому, если есть более одного указанного типа, который может соответствовать любому индивидуальному GameObject, и вам нужно найти конкретный, вы должны использовать Component.GetComponentsInParent и проверить список возвращенных компонентов, чтобы определить тот, который вы хотите.

Чтобы найти компоненты, прикрепленные к другим GameObjects, вам нужно ссылка на это другое GameObject (или любой компонент, прикрепленный к этому GameObject). Затем вы можете вызвать GetComponentInParent на эту ссылку.

См. Component и GameObject справочные страницы класса, описывающие другие варианты GetComponent семейство методов.

Следующий пример получает ссылку на компонент соединения шарнирного соединения на том же GameObject, что и скрипт, или на любом из его родителей, и если найдена, устанавливает свойство для этого компонента соединения шарнирного соединения.

using UnityEngine;

public class GetComponentInParentExample : MonoBehaviour { void Start() { HingeJoint hinge = GetComponentInParent<HingeJoint>();

if (hinge != null) { hinge.useSpring = false; } else { // Try again by including inactive GameObjects. hinge = GetComponentInParent<HingeJoint>(true);

if (hinge != null) { hinge.useSpring = false; } } } }

Обратите внимание: Если запрашиваемый тип является производным от MonoBehaviour и связанный с ним скрипт не может быть загружен, то эта функция возвратит `null` для этого компонента.

Declaration

public Component GetComponentInParent(Type t);
public Component GetComponentInParent(Type t, bool includeInactive);

Параметры

Параметр Описание
t Тип компонента для поиска.
includeInactive Включать ли неактивный GameObjects в поиск.

Возвращаемое значение

Компонент Компонент соответствующего type, в противном случае null, если Компонент не найден.

Описание

Нетиповая версия этого метода.

Эта версия GetComponentInParent не столь эффективна, как версия Generic (выше), так что вы должны использовать ее только в случае необходимости.

using UnityEngine;

public class GetComponentInParentExample : MonoBehaviour { void Start() { HingeJoint hinge = GetComponentInParent(typeof(HingeJoint)) as HingeJoint;

if (hinge != null) { hinge.useSpring = false; } else { // Try again by including inactive GameObjects. hinge = GetComponentInParent(typeof(HingeJoint), true) as HingeJoint;

if (hinge != null) hinge.useSpring = false; } } }