From 9fe74c79db3c3d6047651d84a278eb7a8555a513 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期日, 09 十一月 2025 16:02:40 +0800
Subject: [PATCH] 0312 增加渐变文本

---
 Assets/Editor/SpritePacking/SpriteSettings.asset     |   22 +++++
 /dev/null                                            |   17 ----
 Assets/Editor/UIComponent/GradientTextEditor.cs.meta |    2 
 Assets/Editor/UIComponent/GradientTextEditor.cs      |  134 +++++++++++++++++++++++++++++++++
 Assets/Editor/Tool/PrefabCreateTool.cs               |   14 +++
 5 files changed, 171 insertions(+), 18 deletions(-)

diff --git a/Assets/Editor/SpritePacking/SpriteSettings.asset b/Assets/Editor/SpritePacking/SpriteSettings.asset
index e11a74f..33736a1 100644
--- a/Assets/Editor/SpritePacking/SpriteSettings.asset
+++ b/Assets/Editor/SpritePacking/SpriteSettings.asset
@@ -695,3 +695,25 @@
       maxTextureSize: 2048
       textureCompression: 1
       textureFormat: 50
+  - folderName: BattlePass
+    blockOffset: 1
+    enableRotation: 0
+    enableTightPacking: 0
+    padding: 4
+    readable: 0
+    generateMipMaps: 0
+    sRGB: 1
+    filterMode: 1
+    platformSettings:
+    - name: Standalone
+      maxTextureSize: 2048
+      textureCompression: 1
+      textureFormat: 4
+    - name: Android
+      maxTextureSize: 2048
+      textureCompression: 1
+      textureFormat: 50
+    - name: iPhone
+      maxTextureSize: 2048
+      textureCompression: 1
+      textureFormat: 50
diff --git a/Assets/Editor/Tool/PrefabCreateTool.cs b/Assets/Editor/Tool/PrefabCreateTool.cs
index db8eaf3..21c2e1e 100644
--- a/Assets/Editor/Tool/PrefabCreateTool.cs
+++ b/Assets/Editor/Tool/PrefabCreateTool.cs
@@ -130,6 +130,20 @@
         SetParent(instance);
     }
 
+    [MenuItem("GameObject/UI/娓愬彉鏂囨湰")]
+    public static void CreateGradientText()
+    {
+        var instance = new GameObject("GradientText");
+        var text = instance.AddComponent<GradientText>();
+        text.font = FontUtility.preferred;
+        text.fontSize = 22;
+        text.alignment = TextAnchor.MiddleCenter;
+        text.raycastTarget = false;
+        text.horizontalOverflow = HorizontalWrapMode.Overflow;
+        text.verticalOverflow = VerticalWrapMode.Overflow;
+        SetParent(instance);
+    }
+
     [MenuItem("GameObject/UI/TextEx")]
     public static void CreateTextEx()
     {
diff --git a/Assets/Editor/UIComponent/GradientTextEditor.cs b/Assets/Editor/UIComponent/GradientTextEditor.cs
new file mode 100644
index 0000000..13bd37b
--- /dev/null
+++ b/Assets/Editor/UIComponent/GradientTextEditor.cs
@@ -0,0 +1,134 @@
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.UI;
+
+[CustomEditor(typeof(GradientText), true), CanEditMultipleObjects]
+public class GradientTextEditor : UnityEditor.UI.TextEditor
+{
+    private SerializedProperty m_GradientType;
+    private SerializedProperty m_TopLeftColor;
+    private SerializedProperty m_TopRightColor;
+    private SerializedProperty m_BottomLeftColor;
+    private SerializedProperty m_BottomRightColor;
+    private SerializedProperty m_UseGradient;
+
+    protected override void OnEnable()
+    {
+        base.OnEnable();
+        
+        m_GradientType = serializedObject.FindProperty("m_GradientType");
+        m_TopLeftColor = serializedObject.FindProperty("m_TopLeftColor");
+        m_TopRightColor = serializedObject.FindProperty("m_TopRightColor");
+        m_BottomLeftColor = serializedObject.FindProperty("m_BottomLeftColor");
+        m_BottomRightColor = serializedObject.FindProperty("m_BottomRightColor");
+        m_UseGradient = serializedObject.FindProperty("m_UseGradient");
+    }
+
+    public override void OnInspectorGUI()
+    {
+        base.OnInspectorGUI();
+        
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("娓愬彉璁剧疆", EditorStyles.boldLabel);
+        
+        serializedObject.Update();
+        
+        EditorGUILayout.PropertyField(m_UseGradient, new GUIContent("鍚敤娓愬彉"));
+        
+        if (m_UseGradient.boolValue)
+        {
+            EditorGUILayout.PropertyField(m_GradientType, new GUIContent("娓愬彉绫诲瀷"));
+            
+            var gradientType = (GradientText.GradientType)m_GradientType.enumValueIndex;
+            
+            switch (gradientType)
+            {
+                case GradientText.GradientType.Horizontal:
+                    EditorGUILayout.PropertyField(m_TopLeftColor, new GUIContent("宸︿晶棰滆壊"));
+                    EditorGUILayout.PropertyField(m_TopRightColor, new GUIContent("鍙充晶棰滆壊"));
+                    break;
+                    
+                case GradientText.GradientType.Vertical:
+                    EditorGUILayout.PropertyField(m_TopLeftColor, new GUIContent("椤堕儴棰滆壊"));
+                    EditorGUILayout.PropertyField(m_BottomLeftColor, new GUIContent("搴曢儴棰滆壊"));
+                    break;
+                    
+                case GradientText.GradientType.Diagonal:
+                    EditorGUILayout.PropertyField(m_TopLeftColor, new GUIContent("宸︿笂棰滆壊"));
+                    EditorGUILayout.PropertyField(m_BottomRightColor, new GUIContent("鍙充笅棰滆壊"));
+                    break;
+                    
+                case GradientText.GradientType.Radial:
+                    EditorGUILayout.PropertyField(m_TopLeftColor, new GUIContent("涓績棰滆壊"));
+                    EditorGUILayout.PropertyField(m_BottomRightColor, new GUIContent("杈圭紭棰滆壊"));
+                    break;
+                    
+                case GradientText.GradientType.Custom:
+                    EditorGUILayout.PropertyField(m_TopLeftColor, new GUIContent("宸︿笂棰滆壊"));
+                    EditorGUILayout.PropertyField(m_TopRightColor, new GUIContent("鍙充笂棰滆壊"));
+                    EditorGUILayout.PropertyField(m_BottomLeftColor, new GUIContent("宸︿笅棰滆壊"));
+                    EditorGUILayout.PropertyField(m_BottomRightColor, new GUIContent("鍙充笅棰滆壊"));
+                    break;
+            }
+            
+            // 蹇�熻缃寜閽�
+            EditorGUILayout.Space();
+            EditorGUILayout.LabelField("蹇�熻缃�", EditorStyles.miniLabel);
+            
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("绾⑩啋钃�"))
+            {
+                SetHorizontalGradient(Color.red, Color.blue);
+            }
+            if (GUILayout.Button("缁库啋榛�"))
+            {
+                SetHorizontalGradient(Color.green, Color.yellow);
+            }
+            if (GUILayout.Button("褰╄櫣"))
+            {
+                SetRainbowGradient();
+            }
+            GUILayout.EndHorizontal();
+            
+            GUILayout.BeginHorizontal();
+            if (GUILayout.Button("閲戔啋姗�"))
+            {
+                SetVerticalGradient(Color.yellow, new Color(1f, 0.5f, 0f));
+            }
+            if (GUILayout.Button("绱啋绮�"))
+            {
+                SetVerticalGradient(new Color(0.5f, 0f, 0.5f), new Color(1f, 0.4f, 0.7f));
+            }
+            GUILayout.EndHorizontal();
+        }
+        
+        serializedObject.ApplyModifiedProperties();
+    }
+    
+    private void SetHorizontalGradient(Color leftColor, Color rightColor)
+    {
+        m_GradientType.enumValueIndex = (int)GradientText.GradientType.Horizontal;
+        m_TopLeftColor.colorValue = leftColor;
+        m_BottomLeftColor.colorValue = leftColor;
+        m_TopRightColor.colorValue = rightColor;
+        m_BottomRightColor.colorValue = rightColor;
+    }
+    
+    private void SetVerticalGradient(Color topColor, Color bottomColor)
+    {
+        m_GradientType.enumValueIndex = (int)GradientText.GradientType.Vertical;
+        m_TopLeftColor.colorValue = topColor;
+        m_TopRightColor.colorValue = topColor;
+        m_BottomLeftColor.colorValue = bottomColor;
+        m_BottomRightColor.colorValue = bottomColor;
+    }
+    
+    private void SetRainbowGradient()
+    {
+        m_GradientType.enumValueIndex = (int)GradientText.GradientType.Horizontal;
+        m_TopLeftColor.colorValue = Color.red;
+        m_BottomLeftColor.colorValue = Color.red;
+        m_TopRightColor.colorValue = Color.blue;
+        m_BottomRightColor.colorValue = Color.blue;
+    }
+}
\ No newline at end of file
diff --git a/Assets/Editor/UIComponent/OutlineColorEditor.cs.meta b/Assets/Editor/UIComponent/GradientTextEditor.cs.meta
similarity index 83%
rename from Assets/Editor/UIComponent/OutlineColorEditor.cs.meta
rename to Assets/Editor/UIComponent/GradientTextEditor.cs.meta
index 805da84..c8a2115 100644
--- a/Assets/Editor/UIComponent/OutlineColorEditor.cs.meta
+++ b/Assets/Editor/UIComponent/GradientTextEditor.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: e773e3c6a8eb0e74d8864360b4fd7e1e
+guid: 8dfc4262d1ea3e0469457b42af76c1ee
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Assets/Editor/UIComponent/OutlineColorEditor.cs b/Assets/Editor/UIComponent/OutlineColorEditor.cs
deleted file mode 100644
index 3bca106..0000000
--- a/Assets/Editor/UIComponent/OutlineColorEditor.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-锘縰sing UnityEditor;
-using UnityEngine;
-
-[CustomEditor(typeof(OutlineColor),true),CanEditMultipleObjects]
-public class OutlineColorEditor:Editor {
-
-    public override void OnInspectorGUI()
-    {
-        base.OnInspectorGUI();
-        EditorGUILayout.Space();
-        OutlineColor outline = target as OutlineColor;
-        outline.colorType = (QualityTextColType)EditorGUILayout.EnumPopup("棰滆壊绫诲瀷", outline.colorType);
-        outline.effectDistanceEx = EditorGUILayout.Vector2Field("鎻忚竟璺濈",outline.effectDistanceEx);
-    }
-
-}
-

--
Gitblit v1.8.0