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

GameObject.GetComponent

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

public T GetComponent();

返回值

T 指定类型组件的引用,以类型为 T 的对象形式返回。如果未找到组件,则返回 null

描述

通过将组件类型作为类型参数提供给泛型方法,检索指定类型组件的引用。

GetComponent 仅返回在 GameObject 上找到的第一个匹配组件,并且不会按照定义的顺序检查组件。如果存在多个相同类型的组件并且您需要找到一个特定的组件,请使用 GameObject.GetComponents,并检查返回的组件列表以识别所需的组件。

注意: 如果您请求的类型是 MonoBehaviour 的派生类型,并且定义它的脚本无法加载,则此函数将为该组件返回 `null`。这可能是因为您对类命名含糊不清。有关命名方面的更多信息,请参阅手册中的 命名脚本

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

ComponentType myComponent = otherGameObject.GetComponent<ComponentType>()

要查找附加到其他 GameObject 的组件,您需要 对该其他 GameObject 的引用,或对附加到该 GameObject 的任何组件的引用。然后,您可以在该引用上调用 GetComponent

您还可以使用此方法获取附加到此脚本所在的 GameObject 的组件的引用,方法是在附加到 GameObject 的 MonoBehaviour 派生类中调用此方法。您可以省略前面的 GameObject 限定词以引用脚本附加到的 GameObject。在这种情况下,您实际上是在调用 Component.GetComponent,因为脚本本身是一种组件类型,但结果与引用 GameObject 本身相同。例如

ComponentType myComponent = GetComponent<ComponentType>()

以下示例获取引用 GameObject 上铰链关节组件的引用,如果找到,则设置其上的属性。

using UnityEngine;

public class GetComponentExample : MonoBehaviour // Attach this script to a GameObject as a component. { // Create a reference to another GameObject in the scene. Set a value for this in the Other Game Object field // in the Inspector window before entering Play mode. The referenced GameObject must contain a // HingeJoint component. public GameObject otherGameObject;

void Start() { HingeJoint hinge = otherGameObject.GetComponent<HingeJoint>(); // Perform null check to confirm a valid HingeJoint component was successfully returned. if (hinge != null) { hinge.useSpring = false; } } }

声明

public Component GetComponent(Type type);

参数

type 要搜索的组件类型,以 Type 对象形式指定。

返回值

Component 指定类型组件的引用,以 Component 类型形式返回。如果未找到组件,则返回 null

描述

通过将组件类型作为方法参数提供,检索指定类型组件的引用。

此版本的 GetComponent 不如泛型版本高效。仅在必要时使用此版本。

GetComponent 仅返回在 GameObject 上找到的第一个匹配组件,并且不会按照定义的顺序检查组件。如果存在多个相同类型的组件并且您需要找到一个特定的组件,请使用 GameObject.GetComponents,并检查返回的组件列表以识别所需的组件。

注意: 如果您请求的类型是 MonoBehaviour 的派生类型,并且定义它的脚本无法加载,则此函数将为该组件返回 `null`。这可能是因为您对类命名含糊不清。有关命名方面的更多信息,请参阅手册中的 命名脚本

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

ComponentType myComponent = otherGameObject.GetComponent(typeof(ComponentType)) as ComponentType

要查找附加到其他 GameObject 的组件,您需要 对该其他 GameObject 的引用,或对附加到该 GameObject 的任何组件的引用。然后,您可以在该引用上调用 GetComponent

您还可以使用此方法获取附加到此脚本所在的 GameObject 的组件的引用,方法是在附加到 GameObject 的 MonoBehaviour 派生类中调用此方法。您可以省略前面的 GameObject 限定词以引用脚本附加到的 GameObject。在这种情况下,您实际上是在调用 Component.GetComponent,因为脚本本身是一种组件类型,但结果与引用 GameObject 本身相同。例如

ComponentType myComponent = GetComponent(typeof(ComponentType)) as ComponentType

以下示例获取引用 GameObject 上铰链关节组件的引用,如果找到,则设置其上的属性。

using UnityEngine;

public class GetComponentExample : MonoBehaviour // Attach this script to a GameObject as a component. { // Create a reference to another GameObject in the scene. Set a value for this in the Other Game Object field // in the Inspector window before entering Play mode. The referenced GameObject must contain a // HingeJoint component. public GameObject otherGameObject;

void Start() { // This version of this method returns a Component, so use the as operator to safely // convert it to the derived HingeJoint type HingeJoint hinge = otherGameObject.GetComponent(typeof(HingeJoint)) as HingeJoint; // Perform null check to confirm that the returned type was successfully converted to HingeJoint. if (hinge != null) { hinge.useSpring = false; } } }

声明

public Component GetComponent(string type);

参数

type 要搜索的组件类型名称,以字符串形式指定。

返回值

Component 指定类型组件的引用,以 Component 类型形式返回。如果未找到组件,则返回 null

描述

通过将组件类型名称作为方法参数提供,检索指定类型组件的引用。

此版本的 GetComponent 不如泛型版本高效。仅在必要时使用此版本。

GetComponent 仅返回在 GameObject 上找到的第一个匹配组件,并且不会按照定义的顺序检查组件。如果存在多个相同类型的组件并且您需要找到一个特定的组件,请使用 GameObject.GetComponents,并检查返回的组件列表以识别所需的组件。

注意: 如果您请求的类型是 MonoBehaviour 的派生类型,并且定义它的脚本无法加载,则此函数将为该组件返回 `null`。这可能是因为您对类命名含糊不清。有关命名方面的更多信息,请参阅手册中的 命名脚本

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

ComponentType myComponent = otherGameObject.GetComponent("ComponentType") as ComponentType

要查找附加到其他 GameObject 的组件,您需要 对该其他 GameObject 的引用,或对附加到该 GameObject 的任何组件的引用。然后,您可以在该引用上调用 GetComponent

您还可以使用此方法获取附加到此脚本所在的 GameObject 的组件的引用,方法是在附加到 GameObject 的 MonoBehaviour 派生类中调用此方法。您可以省略前面的 GameObject 限定词以引用脚本附加到的 GameObject。在这种情况下,您实际上是在调用 Component.GetComponent,因为脚本本身是一种组件类型,但结果与引用 GameObject 本身相同。例如

ComponentType myComponent = GetComponent("ComponentType") as ComponentType

以下示例获取引用 GameObject 上铰链关节组件的引用,如果找到,则设置其上的属性。

using UnityEngine;

public class GetComponentNonPerformantExample : MonoBehaviour // Attach this script to a GameObject as a component. { // Create a reference to another GameObject in the scene. Set a value for this in the Other Game Object field // in the Inspector window before entering Play mode. The referenced GameObject must contain a // HingeJoint component. public GameObject otherGameObject;

void Start() { // This version of this method returns a Component, so use the as operator to safely // convert it to the derived HingeJoint type HingeJoint hinge = otherGameObject.GetComponent("HingeJoint") as HingeJoint; // Perform null check to confirm a valid HingeJoint component was successfully returned. if (hinge != null) { hinge.useSpring = false; } } }