UIComponentInspector.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using UnityEditor;
  8. using UnityGameFramework.Runtime;
  9. namespace UnityGameFramework.Editor
  10. {
  11. [CustomEditor(typeof(UIComponent))]
  12. internal sealed class UIComponentInspector : GameFrameworkInspector
  13. {
  14. private SerializedProperty m_EnableOpenUIFormSuccessEvent = null;
  15. private SerializedProperty m_EnableOpenUIFormFailureEvent = null;
  16. private SerializedProperty m_EnableOpenUIFormUpdateEvent = null;
  17. private SerializedProperty m_EnableOpenUIFormDependencyAssetEvent = null;
  18. private SerializedProperty m_EnableCloseUIFormCompleteEvent = null;
  19. private SerializedProperty m_InstanceAutoReleaseInterval = null;
  20. private SerializedProperty m_InstanceCapacity = null;
  21. private SerializedProperty m_InstanceExpireTime = null;
  22. private SerializedProperty m_InstancePriority = null;
  23. private SerializedProperty m_InstanceRoot = null;
  24. private SerializedProperty m_UIGroups = null;
  25. private HelperInfo<UIFormHelperBase> m_UIFormHelperInfo = new HelperInfo<UIFormHelperBase>("UIForm");
  26. private HelperInfo<UIGroupHelperBase> m_UIGroupHelperInfo = new HelperInfo<UIGroupHelperBase>("UIGroup");
  27. public override void OnInspectorGUI()
  28. {
  29. base.OnInspectorGUI();
  30. serializedObject.Update();
  31. UIComponent t = (UIComponent)target;
  32. EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
  33. {
  34. EditorGUILayout.PropertyField(m_EnableOpenUIFormSuccessEvent);
  35. EditorGUILayout.PropertyField(m_EnableOpenUIFormFailureEvent);
  36. EditorGUILayout.PropertyField(m_EnableOpenUIFormUpdateEvent);
  37. EditorGUILayout.PropertyField(m_EnableOpenUIFormDependencyAssetEvent);
  38. EditorGUILayout.PropertyField(m_EnableCloseUIFormCompleteEvent);
  39. }
  40. EditorGUI.EndDisabledGroup();
  41. float instanceAutoReleaseInterval = EditorGUILayout.DelayedFloatField("Instance Auto Release Interval", m_InstanceAutoReleaseInterval.floatValue);
  42. if (instanceAutoReleaseInterval != m_InstanceAutoReleaseInterval.floatValue)
  43. {
  44. if (EditorApplication.isPlaying)
  45. {
  46. t.InstanceAutoReleaseInterval = instanceAutoReleaseInterval;
  47. }
  48. else
  49. {
  50. m_InstanceAutoReleaseInterval.floatValue = instanceAutoReleaseInterval;
  51. }
  52. }
  53. int instanceCapacity = EditorGUILayout.DelayedIntField("Instance Capacity", m_InstanceCapacity.intValue);
  54. if (instanceCapacity != m_InstanceCapacity.intValue)
  55. {
  56. if (EditorApplication.isPlaying)
  57. {
  58. t.InstanceCapacity = instanceCapacity;
  59. }
  60. else
  61. {
  62. m_InstanceCapacity.intValue = instanceCapacity;
  63. }
  64. }
  65. float instanceExpireTime = EditorGUILayout.DelayedFloatField("Instance Expire Time", m_InstanceExpireTime.floatValue);
  66. if (instanceExpireTime != m_InstanceExpireTime.floatValue)
  67. {
  68. if (EditorApplication.isPlaying)
  69. {
  70. t.InstanceExpireTime = instanceExpireTime;
  71. }
  72. else
  73. {
  74. m_InstanceExpireTime.floatValue = instanceExpireTime;
  75. }
  76. }
  77. int instancePriority = EditorGUILayout.DelayedIntField("Instance Priority", m_InstancePriority.intValue);
  78. if (instancePriority != m_InstancePriority.intValue)
  79. {
  80. if (EditorApplication.isPlaying)
  81. {
  82. t.InstancePriority = instancePriority;
  83. }
  84. else
  85. {
  86. m_InstancePriority.intValue = instancePriority;
  87. }
  88. }
  89. EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
  90. {
  91. EditorGUILayout.PropertyField(m_InstanceRoot);
  92. m_UIFormHelperInfo.Draw();
  93. m_UIGroupHelperInfo.Draw();
  94. EditorGUILayout.PropertyField(m_UIGroups, true);
  95. }
  96. EditorGUI.EndDisabledGroup();
  97. if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject))
  98. {
  99. EditorGUILayout.LabelField("UI Group Count", t.UIGroupCount.ToString());
  100. }
  101. serializedObject.ApplyModifiedProperties();
  102. Repaint();
  103. }
  104. protected override void OnCompileComplete()
  105. {
  106. base.OnCompileComplete();
  107. RefreshTypeNames();
  108. }
  109. private void OnEnable()
  110. {
  111. m_EnableOpenUIFormSuccessEvent = serializedObject.FindProperty("m_EnableOpenUIFormSuccessEvent");
  112. m_EnableOpenUIFormFailureEvent = serializedObject.FindProperty("m_EnableOpenUIFormFailureEvent");
  113. m_EnableOpenUIFormUpdateEvent = serializedObject.FindProperty("m_EnableOpenUIFormUpdateEvent");
  114. m_EnableOpenUIFormDependencyAssetEvent = serializedObject.FindProperty("m_EnableOpenUIFormDependencyAssetEvent");
  115. m_EnableCloseUIFormCompleteEvent = serializedObject.FindProperty("m_EnableCloseUIFormCompleteEvent");
  116. m_InstanceAutoReleaseInterval = serializedObject.FindProperty("m_InstanceAutoReleaseInterval");
  117. m_InstanceCapacity = serializedObject.FindProperty("m_InstanceCapacity");
  118. m_InstanceExpireTime = serializedObject.FindProperty("m_InstanceExpireTime");
  119. m_InstancePriority = serializedObject.FindProperty("m_InstancePriority");
  120. m_InstanceRoot = serializedObject.FindProperty("m_InstanceRoot");
  121. m_UIGroups = serializedObject.FindProperty("m_UIGroups");
  122. m_UIFormHelperInfo.Init(serializedObject);
  123. m_UIGroupHelperInfo.Init(serializedObject);
  124. RefreshTypeNames();
  125. }
  126. private void RefreshTypeNames()
  127. {
  128. m_UIFormHelperInfo.Refresh();
  129. m_UIGroupHelperInfo.Refresh();
  130. serializedObject.ApplyModifiedProperties();
  131. }
  132. }
  133. }