5.1 什么是 SerializedObject
SerializedObject 是一个经过处理的序列化数据,使 Unity 可以轻松处理。这使得可以从撤消处理和游戏对象轻松访问各种数据并创建预制件。
UnityEngine.Object 和 SerializedObject 之间的关系
在Unity Editor 中,所有对象(UnityEngine.Object)都将转换为 SerializedObject并进行处理。在 Inspector 中编辑组件值时,您不是编辑 Component 的实例,而是编辑 SerializedObject 的实例。
资产与 SerializedObject 的关系
将 UnityEngine.Object 保存为资产时,它将另存为二进制或 YAML 格式的文本数据。 SerializedObject 负责这些序列化。
资产和.meta 文件
资产是实际对象的序列化。 .meta 文件保存导入器设置等。
在导入资产时,会从资产和.meta 文件生成 SerializedObject(如果没有.meta 文件,则默认自动生成),并转换为 UnityEngine.Object。
要序列化的类变量
在某些条件下, UnityEngine.Object 的派生类(用户经常触摸 MonoBehaviour,ScriptableObject, Editor, EditorWindow 等)将判断它是一个要序列化的字段。
• 必须是公共变量或具有 SerializeField 属性的字段
• 支持可序列化 Unity 的类型(sbyte, short, int, long, byte, ushort,uint, ulong, float, double, bool, char, string, UnityEngine.Object,Serializable 属性添加类和结构等)
不能序列化的情况,提及以下两个。
• 变量不是 static, const 或 readonly
• 不是抽象类
5.2 如何使用 SerializedObject
从 SerializedObject 获取参数