版本: Unity 6 (6000.0)
语言英语
  • C#

GameObject.GetComponentInParent

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public T GetComponentInParent(bool includeInactive = false);

参数

includeInactive 是否在搜索中包含非激活的父级 GameObject。

返回值

T 匹配类型 T 的组件,如果未找到匹配组件,则返回 null

描述

检索指定 GameObject 或其任何父级上类型为 T 的组件的引用。

此方法首先检查其调用的 GameObject,然后向上递归遍历每个父级 GameObject,直到找到指定类型 T 的匹配组件。

除非您使用 includeInactive 参数设置为 true 调用该方法,否则只有激活的父级 GameObject 会包含在搜索中,在这种情况下,非激活的父级 GameObject 也会包含在内。无论此参数如何,都会始终搜索调用该方法的 GameObject。

此方法的典型用法是在对不同于脚本所在 GameObject 的引用上调用它。例如

myResults = otherGameObject.GetComponentInParent<ComponentType>()

但是,如果您在 MonoBehaviour 类内部编写代码,则可以省略前面的 GameObject 引用以在脚本附加到的同一 GameObject 及其父级上执行搜索。在这种情况下,您实际上是在调用 Component.GetComponentInParent,因为脚本本身是组件类型,但结果与您引用 GameObject 本身相同。例如

myResults = GetComponentInParent<ComponentType>()

GetComponentInParent 仅返回找到的第一个匹配组件,并且不会按定义的顺序检查组件。如果有多个指定类型的组件,并且您需要找到特定的组件,则应使用 Component.GetComponentsInParent 并检查返回的组件列表以识别所需的组件。

要查找附加到其他 GameObject 的组件,您需要 对该其他 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; } } }

声明

public Component GetComponentInParent(Type type);

声明

public Component GetComponentInParent(Type type, bool includeInactive);

参数

type 要搜索的组件类型。
includeInactive 是否在搜索中包含非激活的父级 GameObject。

返回值

Component 匹配 type 的组件,如果未找到匹配组件,则返回 null

描述

此方法的非泛型版本。

此版本的 GetComponentInParent 不如泛型版本(上文)高效,因此您应仅在必要时使用它。

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; } } }