T[] 包含指定类型 T
的所有匹配组件的数组。
检索指定 GameObject 上所有类型为 T 的组件的引用。
此方法的典型用法是在对与您的脚本所在的 GameObject 不同的 GameObject 的引用上调用它。例如myResults = otherGameObject.GetComponents<ComponentType>()
但是,如果您在 MonoBehaviour 类中编写代码,则可以省略前面的 GameObject 引用以在脚本附加到的相同 GameObject 上执行搜索。在这种情况下,您实际上是在调用 Component.GetComponents,因为脚本本身是组件类型,但结果与您引用 GameObject 本身相同。例如myResults = GetComponents<ComponentType>()
要查找附加到特定 GameObject 的组件,您需要对该其他 GameObject 的引用(或附加到该 GameObject 的任何组件)。然后,您可以在该引用上调用 GetComponents
。
注意:如果您请求的类型是 MonoBehaviour 的派生类,并且关联的脚本无法加载,则此函数将为该组件返回 null
。
以下示例获取对指定 GameObject 上所有铰链关节组件的引用,并设置在每个找到的铰链关节组件上设置属性。
using UnityEngine;
public class GetComponentsExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject
public GameObject objectToCheck;
void Start() { HingeJoint[] hingeJoints;
hingeJoints = objectToCheck.GetComponents<HingeJoint>();
foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }
results | 用于返回结果的列表。 |
GetComponents 方法的一个变体,允许您提供自己的列表以填充结果。
这使您无需为每次调用该方法分配新的列表对象。您提供的列表将调整大小以匹配找到的结果数,并且列表中的任何现有值将被覆盖。
using UnityEngine; using System.Collections.Generic;
public class GetComponentsExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject
public GameObject objectToCheck;
void Start() { List<HingeJoint> hingeJoints = new List<HingeJoint>();
objectToCheck.GetComponents(hingeJoints);
foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }
type | 要搜索的组件类型。 |
Component[] 包含所有匹配类型 type
的组件的数组。
此方法的非泛型版本。
此版本的 GetComponents
效率不如泛型版本(上面),因此您应该仅在必要时使用它。
using UnityEngine;
public class GetComponentsExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject
public GameObject objectToCheck;
void Start() { Component[] hingeJoints;
hingeJoints = objectToCheck.GetComponents(typeof(HingeJoint));
foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }
type | 要搜索的组件类型。 |
results | 用于返回结果的列表。 |
此方法的非泛型版本,允许您提供自己的列表以填充结果。
在此版本的 GetComponents
方法中,results
的类型为 Component
,而不是检索的组件的类型。
如果您请求的类型是 MonoBehaviour 的派生类,并且关联的脚本无法加载,则此函数将为该组件返回 null
。
using UnityEngine; using System.Collections.Generic;
public class GetComponentsExample : MonoBehaviour { // Disable the spring on all HingeJoints in the referenced GameObject
public GameObject objectToCheck;
void Start() { List<Component> hingeJoints = new List<Component>();
objectToCheck.GetComponents(typeof(HingeJoint), hingeJoints);
foreach (HingeJoint joint in hingeJoints) { joint.useSpring = false; } } }