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

Component.GetComponentsInParent

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public T[] GetComponentsInParent();

声明

public T[] GetComponentsInParent(bool includeInactive);

参数

includeInactive 是否在搜索中包含非激活的父级游戏对象。

返回值

T[] 包含所有类型为 T 的匹配组件的数组。

描述

获取指定组件所在同一游戏对象及其任何父级上所有类型为 T 的组件的引用。

此方法的典型用法是从 MonoBehaviour 脚本(它本身就是一种组件类型)调用它,以查找附加到与该脚本相同的游戏对象或其父级游戏对象的其他组件或 MonoBehaviour 的引用。在这种情况下,您可以不指定任何前导对象即可调用该方法。例如

myResults = GetComponentsInParent<ComponentType>()

您还可以对不同组件的引用调用此方法,该组件可能附加到不同的游戏对象。在这种情况下,将搜索该组件附加到的游戏对象及其父级。例如

myResults = otherComponent.GetComponentsInParent<ComponentType>()

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

除非您在调用该方法时将 includeInactive 参数设置为 true,否则仅包含活动父级游戏对象,在这种情况下,也会包含非活动父级游戏对象。无论此参数如何,始终都会搜索调用该方法的游戏对象。

要查找附加到其他游戏对象的组件,您需要 对该其他游戏对象的引用(或附加到该游戏对象的任何组件)。然后,您可以对该引用调用 GetComponentsInParent

请参阅 ComponentGameObject 类参考页面,了解 GetComponent 方法系列的其他变体。

以下示例获取对与脚本相同的游戏对象或其任何父级上的所有铰链关节组件的引用,如果找到,则设置这些组件上的属性。

using UnityEngine;

public class GetComponentsInParentExample : MonoBehaviour { public Component[] hingeJoints;

void Start() { // Disable the spring on all HingeJoints // in this game object and all its parent game objects hingeJoints = GetComponentsInParent<HingeJoint>();

foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }

注意:如果请求的类型是 MonoBehaviour 的派生类型,并且关联的脚本无法加载,则此函数将为该组件返回 `null`。


声明

public void GetComponentsInParent(bool includeInactive, List<T> results);

参数

includeInactive 是否在搜索中包含非激活的子级游戏对象。
results 用于返回结果的列表。

描述

GetComponentsInParent 方法的一个变体,允许您提供自己的 List 以填充结果。

这使您可以避免为每次对该方法的调用分配新的 List 对象。您提供的列表将调整大小以匹配找到的结果数量,并且列表中的任何现有值都将被覆盖。


声明

public Component[] GetComponentsInParent(Type t, bool includeInactive = false);

参数

t 要搜索的组件类型。
includeInactive 是否在搜索中包含非激活的父级游戏对象。

返回值

Component[] 所有找到的与指定类型匹配的组件的数组。

描述

此方法的非泛型版本。

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