包含此页的版本:
不含此页的版本:
这UnityEngine.Objectclass 充当 Unity 可以在 Unity 编辑器中引用的所有对象的基类。您可以拖放继承自UnityEngine.Object到检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表,或使用“对象”字段旁边的“对象选取器”进行拾取。
而不是直接从Object对于您自己的自定义类,通常最好从设计为更具体地针对您的目标的类继承。例如:
MonoBehaviour如果您想编写一个自定义组件,您可以将其添加到GameObject,以控制GameObject做或提供与之相关的一些功能。ScriptableObject如果要创建可以存储序列化数据的自定义资产。这两个都继承自UnityEngine.Object但提供额外的功能来满足这些目的。
注意: UnityEngine.Object与 不同。NET 的基础System.Object,该模板不包含在默认脚本模板中,因此名称不会冲突。您仍然可以继承 。NET 的System.Object如果您想创建不需要在检查器中分配的类。
这Objectclass 提供了用于实例化和销毁对象以及查找对特定类型对象的引用的方法。有关 Object 类的 API 的更多信息,请参阅 Object 的脚本参考页面。
UnityEngine.Object是 Unity 中一种特殊类型的 C# 对象,因为它链接到非托管 (C++) 对应对象。例如,当您使用相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表组件,Unity 将对象的状态存储在对象的 C++ 对应项上,而不是 C# 对象本身。
Unity 目前不支持 C#WeakReference类,实例为UnityEngine.Object.因此,您不应该使用WeakReference以引用已加载的资产。Microsoft有关WeakReference类。
使用 Object.Destroy 或 Object.DestroyImmediate 等方法销毁派生自UnityEngine.Object,Unity 会销毁(卸载)C++ 对应对象。不能使用显式调用销毁 C# 对象,因为垃圾回收器管理内存。一旦不再有对托管对象的任何引用,垃圾回收器就会收集并销毁它。
如果您的应用程序尝试访问已销毁的UnityEngine.Object同样,Unity 为大多数类型重新创建了原生对应对象。这种重新创建行为的两个例外是 MonoBehaviours 和 ScriptableObjects:一旦它们被销毁,Unity 就永远不会重新加载它们。
对于继承自 UnityEngine.Object 的类型,Unity 使用 C# 相等和不等式运算符的自定义版本。这意味着空检查myGameObject == null可以评估true(反之亦然myGameObject != null可以评估false),即使myGameObject从技术上讲,保存有效的 C# 对象引用。这发生在两种情况下:
因为你不能重载??和?.运算符,它们与派生自UnityEngine.Object.当您在销毁的运算符上使用它们时,它们不会返回与相等和不等式运算符相同的结果MonoBehaviour或ScriptableObject而托管对象仍然存在。