diff options
author | chai <chaifix@163.com> | 2021-04-07 21:33:14 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-04-07 21:33:14 +0800 |
commit | c47b92e92cf33ae8bf2f38929e137294397e4735 (patch) | |
tree | c67ae3419eaf15e84f1679186e107f598de33978 /Assets/Scripts/Editor/UIGradientEditor.cs |
Diffstat (limited to 'Assets/Scripts/Editor/UIGradientEditor.cs')
-rw-r--r-- | Assets/Scripts/Editor/UIGradientEditor.cs | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/Assets/Scripts/Editor/UIGradientEditor.cs b/Assets/Scripts/Editor/UIGradientEditor.cs new file mode 100644 index 0000000..493c51d --- /dev/null +++ b/Assets/Scripts/Editor/UIGradientEditor.cs @@ -0,0 +1,140 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; + +namespace Coffee.UIEffects.Editors +{ + /// <summary> + /// UIEffect editor. + /// </summary> + [CustomEditor(typeof(UIGradient))] + [CanEditMultipleObjects] + public class UIGradientEditor : Editor + { + private static readonly GUIContent k_TextVerticalOffset = new GUIContent("Vertical Offset"); + private static readonly GUIContent k_TextHorizontalOffset = new GUIContent("Horizontal Offset"); + private static readonly GUIContent k_TextOffset = new GUIContent("Offset"); + private static readonly GUIContent k_TextLeft = new GUIContent("Left"); + private static readonly GUIContent k_TextRight = new GUIContent("Right"); + private static readonly GUIContent k_TextTop = new GUIContent("Top"); + private static readonly GUIContent k_TextBottom = new GUIContent("Bottom"); + private static readonly GUIContent k_TextColor1 = new GUIContent("Color 1"); + private static readonly GUIContent k_TextColor2 = new GUIContent("Color 2"); + private static readonly GUIContent k_TextDiagonalColor = new GUIContent("Diagonal Color"); + + SerializedProperty _spDirection; + SerializedProperty _spColor1; + SerializedProperty _spColor2; + SerializedProperty _spColor3; + SerializedProperty _spColor4; + SerializedProperty _spRotation; + SerializedProperty _spOffset1; + SerializedProperty _spOffset2; + SerializedProperty _spIgnoreAspectRatio; + SerializedProperty _spGradientStyle; + SerializedProperty _spColorSpace; + + //################################ + // Public/Protected Members. + //################################ + /// <summary> + /// This function is called when the object becomes enabled and active. + /// </summary> + protected void OnEnable() + { + _spIgnoreAspectRatio = serializedObject.FindProperty("m_IgnoreAspectRatio"); + _spDirection = serializedObject.FindProperty("m_Direction"); + _spColor1 = serializedObject.FindProperty("m_Color1"); + _spColor2 = serializedObject.FindProperty("m_Color2"); + _spColor3 = serializedObject.FindProperty("m_Color3"); + _spColor4 = serializedObject.FindProperty("m_Color4"); + _spRotation = serializedObject.FindProperty("m_Rotation"); + _spOffset1 = serializedObject.FindProperty("m_Offset1"); + _spOffset2 = serializedObject.FindProperty("m_Offset2"); + _spGradientStyle = serializedObject.FindProperty("m_GradientStyle"); + _spColorSpace = serializedObject.FindProperty("m_ColorSpace"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + //================ + // Direction. + //================ + EditorGUILayout.PropertyField(_spDirection); + + + //================ + // Color. + //================ + switch ((UIGradient.Direction) _spDirection.intValue) + { + case UIGradient.Direction.Horizontal: + EditorGUILayout.PropertyField(_spColor1, k_TextLeft); + EditorGUILayout.PropertyField(_spColor2, k_TextRight); + break; + case UIGradient.Direction.Vertical: + EditorGUILayout.PropertyField(_spColor1, k_TextTop); + EditorGUILayout.PropertyField(_spColor2, k_TextBottom); + break; + case UIGradient.Direction.Angle: + EditorGUILayout.PropertyField(_spColor1, k_TextColor1); + EditorGUILayout.PropertyField(_spColor2, k_TextColor2); + break; + case UIGradient.Direction.Diagonal: + Rect r = EditorGUILayout.GetControlRect(false, 34); + + r = EditorGUI.PrefixLabel(r, k_TextDiagonalColor); + float w = r.width / 2; + + EditorGUI.PropertyField(new Rect(r.x, r.y, w, 16), _spColor3, GUIContent.none); + EditorGUI.PropertyField(new Rect(r.x + w, r.y, w, 16), _spColor4, GUIContent.none); + EditorGUI.PropertyField(new Rect(r.x, r.y + 18, w, 16), _spColor1, GUIContent.none); + EditorGUI.PropertyField(new Rect(r.x + w, r.y + 18, w, 16), _spColor2, GUIContent.none); + break; + } + + + //================ + // Angle. + //================ + if ((int) UIGradient.Direction.Angle <= _spDirection.intValue) + { + EditorGUILayout.PropertyField(_spRotation); + } + + + //================ + // Offset. + //================ + if ((int) UIGradient.Direction.Diagonal == _spDirection.intValue) + { + EditorGUILayout.PropertyField(_spOffset1, k_TextVerticalOffset); + EditorGUILayout.PropertyField(_spOffset2, k_TextHorizontalOffset); + } + else + { + EditorGUILayout.PropertyField(_spOffset1, k_TextOffset); + } + + + //================ + // Advanced options. + //================ + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Advanced Options", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + { + //if ((target as UIGradient).targetGraphic is Text) + EditorGUILayout.PropertyField(_spGradientStyle); + + EditorGUILayout.PropertyField(_spColorSpace); + EditorGUILayout.PropertyField(_spIgnoreAspectRatio); + } + EditorGUI.indentLevel--; + + serializedObject.ApplyModifiedProperties(); + } + } +}
\ No newline at end of file |