Version: 2023.1
MonoBehaviour
Transform

Object

Unity 在 UnityEngine 命名空间中有一个名为 Object 的类,作为 Unity 可以在编辑器中引用的所有对象的基类。继承自 UnityEngine.Object 的类具有特殊功能,这意味着它们可以被拖放到 Inspector 中的字段中,或者使用 Object 字段旁边的对象选择器来选取。

此页面概述了 Object 类及其使用该类编写脚本时的常见用法。有关 Object 类的每个成员的详尽参考,请参阅 Object 脚本参考

Inspector 窗口中 Object 字段的示例。该字段右侧的圆形图标是对象选择器。
Inspector 窗口中 Object 字段的示例。该字段右侧的圆形图标是对象选择器。

通过脚本创建自己的对象时,您通常不会直接从 Object 继承。而应该从一个更契合您的目标的类继承。

For example, you should inherit from MonoBehaviour if you want to write a custom component which you can add to a GameObject, to control what the GameObject does or provide some functionality relating to it.

或者,如果要创建可以存储序列化数据的自定义资源,应该继承自 ScriptableObject 。二者都继承自 Unity 的 Object 类,但提供了额外的功能来满足这些目的。

注意:Unity 的 Object 类位于 UnityEngine 命名空间。它与 .NET 的 Object 基类不同,虽然名称相同,但后者位于 System 命名空间,并且不包含在默认脚本模板中,因此名称不会发生冲突。如果您想在脚本中创建不需要在 Inspector 中指定的类,仍然可以从 .NET 的 System.Object 继承。

Unity 的 Object 类充当大多数 Unity 内置类的基类,例如 GameObjectComponentMaterialTextureMeshSprite 等等,这意味着所有这些类型都可以拖放到 Inspector 中的这些引用字段中。

如果 Inspector 中的字段指定了特定类型的类(例如 Texture),则 Unity 会限制您将任何其他类型的对象放入该字段中,并且对象选择器将仅显示正确类型的对象。

Inspector 中的三种不同类型的对象字段。
Inspector 中的三种不同类型的对象字段。

上图显示了 Inspector 中的三种类型的对象字段。

第一个是 Object 类型,这意味着可以将任何 Unity 对象指定给该字段。您可以将任何类型的对象放入该字段,无论是游戏对象、纹理、音频剪辑还是其他任何对象。这通常不是很有用,最好让字段接受的类型更加具体。

第二行显示它的类型是 “Texture”,如括号中所示。Texture 是一个内置的 Unity 类,这意味着您可以将任何 Texture 资源放入该字段。Unity 有两个类继承自该类,Texture2D 和 RenderTexture,这意味着您可以将这两种类型中的任何一种放入该字段中。

第三行显示它的类型是 “Food”。没有具有此名称的内置 Unity 类,因此此示例显示了一个继承自 Object 的用户创建的自定义类。如果您随后要创建继承自“Food”的类,例如“Apple”和“Banana”,可为 Food 字段指定对这些类的实例的引用,因为它们继承自该类。

Object 类提供了一些方法,允许您正确实例化和销毁它们,以及查找对特定类型对象的引用。

有关 Object 类的 API 的更多信息,请参阅对象的脚本参考页

Object

MonoBehaviour
Transform