SerializedObject

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

对SerializedObject中的部分方法进行说明

  1. SerializedObject
  2.  
  3. //Inspector中的值变化同步到targetObject中
  4. ApplyModifiedProperties();
  5.  
  6. //更新Inspector界面显示
  7. //targetObject中的值变化同步到Inspector中
  8. Update();
  9.  
  10. //更新Inspector界面显示
  11. //必须先调用EditorUtility的SetDirty()后,再调用UpdateIfDirtyOrScript()
  12. UpdateIfDirtyOrScript();
  13.  
  14. //如果代码中手动改变了SerializedProperty,则需要调用SetIsDifferentCacheDirty()
  15. SetIsDifferentCacheDirty();
  16.  
  17. private void OnEnable()
  18. {
  19. //遍历目标对象中的可见属性
  20. SerializedProperty iterator = serializedObject.GetIterator();
  21. iterator.NextVisible(true);
  22. do
  23. {
  24. if (iterator.name == "m_Script")
  25. {
  26. continue;
  27. }
  28. //其他处理...
  29. } while (iterator.NextVisible(true));
  30. }
  31.  
  32. void OnInspectorGUI ()
  33. {
  34. //从目标对象中获取最新数据
  35. //serializedObject.UpdateIfDirtyOrScript();
  36. serializedObject.Update();
  37.  
  38. //开始检查Inspector的设置有没修改
  39. EditorGUI.BeginChangeCheck();
  40. #region 绘制Inspector界面
  41. EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script"));
  42. //...
  43.  
  44. #endregion
  45. //如果Inspector的设置存在修改,返回true
  46. if (EditorGUI.EndChangeCheck()) {
  47. }
  48.  
  49. //当用户修改了Inspector中的设置时,把变化同步到目标对象中
  50. serializedObject.ApplyModifiedProperties();
  51. //当代码手动修改了SerializedProperty时,把变化同步到目标对象中
  52. serializedObject.SetIsDifferentCacheDirty();
  53. }

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号