SerializedObject 和 SerializedProperty 这两个类能够以完全通用的方式编辑对象上的属性(可自动处理撤销),同时还能调整预制件的 UI 样式。
SerializedObject 将与 SerializedProperty 和 Editor 类结合使用。
另请参阅:SerializedProperty 类、Editor 类。
using UnityEngine; using UnityEditor;
public class MyObject : ScriptableObject { public int myInt = 42; }
public class SerializedPropertyTest : MonoBehaviour { void Start() { MyObject obj = ScriptableObject.CreateInstance<MyObject>(); SerializedObject serializedObject = new UnityEditor.SerializedObject(obj);
UnityEditor.SerializedProperty serializedPropertyMyInt = serializedObject.FindProperty("myInt");
Debug.Log("myInt " + serializedPropertyMyInt.intValue); } }
context | 用于存储和解析 ExposedReference 类型的上下文。这由 SerializedObject 构造函数设置。 |
isEditingMultipleObjects | 序列化对象是否由于多对象编辑而代表多个对象?(只读) |
maxArraySizeForMultiEditing | 定义大小上限,若在选择多个对象时超过该大小,则无法编辑数组。 |
targetObject | 所检查的单个对象(只读)。 |
targetObjects | 所检查的多个对象(只读)。 |
SerializedObject | 为检查的对象创建 SerializedObject。 |
ApplyModifiedProperties | 应用属性修改。 |
ApplyModifiedPropertiesWithoutUndo | 在不注册撤销操作的情况下应用属性修改。 |
CopyFromSerializedProperty | 将 SerializedProperty 中的值复制到序列化对象上的相应序列化属性。 |
CopyFromSerializedPropertyIfDifferent | 将 SerializedProperty 中的更改值复制到序列化对象上的相应序列化属性。 |
FindProperty | 按名称查找序列化属性。 |
GetIterator | 获取第一个序列化属性。 |
SetIsDifferentCacheDirty | 在下一次进行 /Update()/ 调用时更新 hasMultipleDifferentValues 缓存。 |
Update | 更新序列化对象的表示形式。 |
UpdateIfRequiredOrScript | 更新序列化对象的表示形式(仅当自上次调用 Update 后对象发生修改或者它是脚本时才进行更新)。 |