SerializedObject

作者:追风剑情 发布于:2017-12-8 16:53 分类:Unity3d

对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();
}

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号