对SerializedObject中的部分方法进行说明
SerializedObject
//Inspector中的值变化同步到targetObject中
ApplyModifiedProperties();
//更新Inspector界面显示
//targetObject中的值变化同步到Inspector中
Update();
//更新Inspector界面显示
//必须先调用EditorUtility的SetDirty()后,再调用UpdateIfDirtyOrScript()
UpdateIfDirtyOrScript();
//如果代码中手动改变了SerializedProperty,则需要调用SetIsDifferentCacheDirty()
SetIsDifferentCacheDirty();
private void OnEnable()
{
//遍历目标对象中的可见属性
SerializedProperty iterator = serializedObject.GetIterator();
iterator.NextVisible(true);
do
{
if (iterator.name == "m_Script")
{
continue;
}
//其他处理...
} while (iterator.NextVisible(true));
}
void OnInspectorGUI ()
{
//从目标对象中获取最新数据
//serializedObject.UpdateIfDirtyOrScript();
serializedObject.Update();
//开始检查Inspector的设置有没修改
EditorGUI.BeginChangeCheck();
#region 绘制Inspector界面
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script"));
//...
#endregion
//如果Inspector的设置存在修改,返回true
if (EditorGUI.EndChangeCheck()) {
}
//当用户修改了Inspector中的设置时,把变化同步到目标对象中
serializedObject.ApplyModifiedProperties();
//当代码手动修改了SerializedProperty时,把变化同步到目标对象中
serializedObject.SetIsDifferentCacheDirty();
}