UIDissolveEditor.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using UnityEditor;
  2. using UnityEditorInternal;
  3. using UnityEngine;
  4. using System.Linq;
  5. using System.Collections.Generic;
  6. using UnityEngine.UI;
  7. namespace Coffee.UIEffects.Editors
  8. {
  9. /// <summary>
  10. /// UIEffect editor.
  11. /// </summary>
  12. [CustomEditor(typeof(UIDissolve))]
  13. [CanEditMultipleObjects]
  14. public class UIDissolveEditor : Editor
  15. {
  16. SerializedProperty _spEffectFactor;
  17. SerializedProperty _spWidth;
  18. SerializedProperty _spColor;
  19. SerializedProperty _spSoftness;
  20. SerializedProperty _spColorMode;
  21. SerializedProperty _spTransitionTexture;
  22. SerializedProperty _spEffectArea;
  23. SerializedProperty _spKeepAspectRatio;
  24. SerializedProperty _spReverse;
  25. SerializedProperty _spPlay;
  26. SerializedProperty _spLoop;
  27. SerializedProperty _spLoopDelay;
  28. SerializedProperty _spDuration;
  29. SerializedProperty _spInitialPlayDelay;
  30. SerializedProperty _spUpdateMode;
  31. //################################
  32. // Public/Protected Members.
  33. //################################
  34. /// <summary>
  35. /// This function is called when the object becomes enabled and active.
  36. /// </summary>
  37. protected void OnEnable()
  38. {
  39. _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
  40. _spEffectArea = serializedObject.FindProperty("m_EffectArea");
  41. _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
  42. _spWidth = serializedObject.FindProperty("m_Width");
  43. _spColor = serializedObject.FindProperty("m_Color");
  44. _spSoftness = serializedObject.FindProperty("m_Softness");
  45. _spColorMode = serializedObject.FindProperty("m_ColorMode");
  46. _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture");
  47. _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
  48. _spReverse = serializedObject.FindProperty("m_Reverse");
  49. var player = serializedObject.FindProperty("m_Player");
  50. _spPlay = player.FindPropertyRelative("play");
  51. _spDuration = player.FindPropertyRelative("duration");
  52. _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
  53. _spLoop = player.FindPropertyRelative("loop");
  54. _spLoopDelay = player.FindPropertyRelative("loopDelay");
  55. _spUpdateMode = player.FindPropertyRelative("updateMode");
  56. }
  57. /// <summary>
  58. /// Implement this function to make a custom inspector.
  59. /// </summary>
  60. public override void OnInspectorGUI()
  61. {
  62. serializedObject.Update();
  63. //================
  64. // Effect setting.
  65. //================
  66. EditorGUILayout.PropertyField(_spEffectFactor);
  67. EditorGUILayout.PropertyField(_spWidth);
  68. EditorGUILayout.PropertyField(_spSoftness);
  69. EditorGUILayout.PropertyField(_spColor);
  70. using (new MaterialDirtyScope(targets))
  71. {
  72. EditorGUILayout.PropertyField(_spColorMode);
  73. EditorGUILayout.PropertyField(_spTransitionTexture);
  74. }
  75. //================
  76. // Advanced option.
  77. //================
  78. EditorGUILayout.PropertyField(_spEffectArea);
  79. EditorGUILayout.PropertyField(_spKeepAspectRatio);
  80. //================
  81. // Effect player.
  82. //================
  83. EditorGUILayout.PropertyField(_spPlay);
  84. EditorGUILayout.PropertyField(_spDuration);
  85. EditorGUILayout.PropertyField(_spInitialPlayDelay);
  86. EditorGUILayout.PropertyField(_spLoop);
  87. EditorGUILayout.PropertyField(_spLoopDelay);
  88. EditorGUILayout.PropertyField(_spUpdateMode);
  89. EditorGUILayout.PropertyField(_spReverse);
  90. // Debug.
  91. using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
  92. using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
  93. {
  94. GUILayout.Label("Debug");
  95. if (GUILayout.Button("Play", "ButtonLeft"))
  96. {
  97. (target as UIDissolve).Play();
  98. }
  99. if (GUILayout.Button("Stop", "ButtonRight"))
  100. {
  101. (target as UIDissolve).Stop();
  102. }
  103. }
  104. serializedObject.ApplyModifiedProperties();
  105. }
  106. }
  107. }