SerializedObject

class in UnityEditor

切换到手册

描述

SerializedObject 和 SerializedProperty 这两个类能够以完全通用的方式编辑对象上的属性(可自动处理撤销),同时还能调整预制件的 UI 样式。

SerializedObject 将与 SerializedPropertyEditor 类结合使用。

另请参阅: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 后对象发生修改或者它是脚本时才进行更新)。