includeInactive | 是否在搜索中包含非活动父级 GameObject。 |
T 与类型 T
匹配的组件,如果没有找到组件,则为 null
。
获取对指定组件所在的相同 GameObject 或其任何父级上类型为 T
的组件的引用。
此方法的典型用法是从 MonoBehaviour 脚本(它本身也是一种组件类型)调用它,以查找附加到与该脚本相同的 GameObject 或其父级 GameObject 的其他组件或 MonoBehaviour 的引用。在这种情况下,您可以不指定任何前导对象来调用该方法。例如myResults = GetComponentInParent<ComponentType>()
您也可以在对不同组件的引用上调用此方法,该组件可能附加到不同的 GameObject。在这种情况下,将搜索附加该组件的 GameObject 及其父级。例如myResults = otherComponent.GetComponentInParent<ComponentType>()
此方法首先检查它调用的 GameObject,然后递归向上遍历每个父级 GameObject,直到找到与指定类型 T
匹配的组件。
除非您调用该方法并将 includeInactive
参数设置为 true
,否则只有活动父级 GameObject 会包含在搜索中,在这种情况下,非活动父级 GameObject 也将被包含在内。调用该方法的 GameObject 始终会被搜索,而与该参数无关。
注意:GetComponentInParent 仅返回找到的第一个匹配组件,并且在任何单个 GameObject 上检查组件的顺序没有定义。因此,如果在任何单个 GameObject 上有多个指定类型可能匹配,并且您需要找到特定的一个,您应该使用 Component.GetComponentsInParent 并检查返回的组件列表以识别您想要的那个。
要查找附加到其他 GameObject 的组件,您需要一个 对该其他 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`。
t | 要搜索的组件类型。 |
includeInactive | 是否在搜索中包含非活动父级 GameObject。 |
Component 与 type
匹配的组件,如果没有找到组件,则为 null
。
此方法的非泛型版本。
此版本的 GetComponentInParent 效率不如泛型版本(上面),因此您应该只在必要时使用它。
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; } } }