对象
UnityEngine.Object is the base class for all objects the Editor can reference from fields in the Inspector window.
阅读时间4 分钟最后更新于 1 个月前
UnityEngine.ObjectUnityEngine.Object
Inspector 窗口中的“对象 (Object)”字段示例。Object Picker 是字段右侧的圆形图标。
一般而言,继承自专为目标设计的类会更好,而不是直接从自定义类的 继承。例如:
Object- 如果您想编写可以添加到 的自定义组件,应继承自
MonoBehaviour,以控制GameObject的功能或提供与其相关的某些功能。GameObject - 如果您想创建可以存储序列化数据的自定义资源,应该继承自 。
ScriptableObject
二者都继承自 ,但提供了额外的功能来满足这些目的。
UnityEngine.Object注意: 与 .NET 的基本 不同,后者不包含在默认脚本模板中,因此名称不会冲突。如果您想创建不需要在 Inspector 中分配的类,仍然可以从 .NET 的 继承。
UnityEngine.ObjectSystem.ObjectSystem.ObjectObjectUnityEngine.Object 的特殊行为
UnityEngine.Object
Unity 目前不支持将 C# 类与 实例结合使用。因此,不应使用 来引用加载的资源。有关 类的更多信息,请参阅 Microsoft 的 WeakReference 文档。
WeakReferenceUnityEngine.ObjectWeakReferenceWeakReferenceUnity C# 和 Unity C++ 共享 UnityEngine 对象
使用 Object.Destroy 或 Object.DestroyImmediate 等方法来销毁从 派生的对象时,Unity 会销毁(卸载)C++ 对应对象。无法使用显式调用销毁 C# 对象,因为垃圾回收器会管理内存。一旦不再引用托管对象,垃圾回收器便会收集并销毁它。
UnityEngine.Object如果再次访问已销毁的 ,则 Unity 会为大多数类型重新创建原生对应对象。此重新创建行为的两个例外是 MonoBehaviours 和 ScriptableObjects:它们一旦被销毁,Unity 便绝不会重新加载它们。
UnityEngine.ObjectMonoBehaviourScriptableObjectMonoBehaviourScriptableObjectnull由于无法重新加载 ?? 和 ?. 运算符,因此它们与派生自 的对象不兼容。在托管对象仍然存在的情况下对销毁的 或 进行使用时,这些运算符不会返回与相等和不相等运算符相同的结果。
UnityEngine.ObjectMonoBehaviourScriptableObject