From 967b0232d8e24e2b1e89c6656fa62f02492bfcb5 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 09 十月 2025 15:42:22 +0800
Subject: [PATCH] 257 子 【配套功能】新手引导 / 【常规】引导

---
 Assets/Editor/SpritePacking/SpriteSettings.asset                     |   44 -------
 Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs      |   82 +++++++++++++
 Assets/Editor/InvalidScriptScanner.cs                                |    6 
 Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs                |  182 ++++++++++++++++++++++++++++++
 Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta           |   12 ++
 Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta |   12 ++
 Assets/Editor/UI/PSDTOUGUIProcessor.cs                               |    2 
 7 files changed, 292 insertions(+), 48 deletions(-)

diff --git a/Assets/Editor/InvalidScriptScanner.cs b/Assets/Editor/InvalidScriptScanner.cs
index f2a324b..95d85ba 100644
--- a/Assets/Editor/InvalidScriptScanner.cs
+++ b/Assets/Editor/InvalidScriptScanner.cs
@@ -24,7 +24,7 @@
     /// <summary>
     /// 娣诲姞鍙抽敭鑿滃崟椤�
     /// </summary>
-    [MenuItem("GameObject/鎵弿鏃犳晥鑴氭湰", false, 20)]
+    [MenuItem("GameObject/鑴氭湰/鎵弿鏃犳晥鑴氭湰", false, 20)]
     private static void ScanInvalidScripts()
     {
         GameObject selectedObject = Selection.activeGameObject;
@@ -311,7 +311,7 @@
     /// <summary>
     /// 閫掑綊鎵弿鎵�鏈夊瓙瀵硅薄涓殑鏃犳晥鑴氭湰
     /// </summary>
-    [MenuItem("GameObject/閫掑綊鎵弿鎵�鏈夋棤鏁堣剼鏈�", false, 21)]
+    [MenuItem("GameObject/鑴氭湰/閫掑綊鎵弿鎵�鏈夋棤鏁堣剼鏈�", false, 21)]
     private static void ScanAllInvalidScriptsRecursively()
     {
         GameObject selectedObject = Selection.activeGameObject;
@@ -404,7 +404,7 @@
     /// <summary>
     /// 娣诲姞璁剧疆鑿滃崟椤�
     /// </summary>
-    [MenuItem("GameObject/鏃犳晥鑴氭湰鎵弿璁剧疆", false, 22)]
+    [MenuItem("GameObject/鑴氭湰/鏃犳晥鑴氭湰鎵弿璁剧疆", false, 22)]
     private static void ShowSettings()
     {
         // 鍒涘缓璁剧疆绐楀彛
diff --git a/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs b/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs
new file mode 100644
index 0000000..3d2eb56
--- /dev/null
+++ b/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs
@@ -0,0 +1,182 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEngine.UI;
+
+
+public class NewBieGuideEditorWindow : EditorWindow
+{
+    [MenuItem("绋嬪簭/寮曞缂栬緫鍣�")]
+    public static void Create()
+    {
+        var window = GetWindow(typeof(NewBieGuideEditorWindow), false, "寮曞缂栬緫鍣�") as NewBieGuideEditorWindow;
+        window.Show();
+        window.autoRepaintOnSceneChange = true;
+    }
+
+
+    private void OnGUI()
+    {
+        if (!Application.isPlaying)
+        {
+            //閲嶆柊缂栬緫 EditorGUILayout
+            EditorGUILayout.BeginVertical();
+            GUILayout.Label("璇峰厛杩愯娓告垙");
+            EditorGUILayout.EndVertical();
+            return;
+        }
+        EditorGUILayout.BeginVertical();
+
+        EditorGUILayout.BeginHorizontal();
+        if (GUILayout.Button("鎷疯礉缁勪欢璺緞鍒板壀鍒囨澘"))
+        {
+            GameObject go = Selection.activeGameObject;
+            if (go == null)
+            {
+                Debug.LogError("璇峰厛閫夋嫨涓�涓狦ameObject");
+                return;
+            }
+
+
+            // 鑾峰彇 GameObject 鐨勮矾寰�
+            string path = GetGameObjectPath(go);
+
+            // 鎷疯礉鍒板壀鍒囨澘
+            GUIUtility.systemCopyBuffer = path;
+            Debug.Log("宸叉嫹璐濆埌鍓垏鏉�: " + path);
+        }
+        EditorGUILayout.EndHorizontal();
+
+        EditorGUILayout.BeginHorizontal();
+
+        if (GUILayout.Button("閲嶇疆鎵�鏈夊紩瀵�"))
+        {
+            NewBieCenter.Instance.ResetAllGuides();
+        }
+
+        if (GUILayout.Button("缁撴潫鎵�鏈夊紩瀵�"))
+        {
+            NewBieCenter.Instance.CompleteAllGuides();
+        }
+        EditorGUILayout.EndHorizontal();
+
+        DrawNewbieGuides();
+
+        EditorGUILayout.EndVertical();
+    }
+
+    
+    // 閫掑綊鑾峰彇 GameObject 鐨勮矾寰�
+    private static string GetGameObjectPath(GameObject obj)
+    {
+        if (obj == null)
+            return string.Empty;
+
+        if (obj.transform.parent == null)
+        { 
+            return obj.name;
+        }
+        
+        if (obj.transform.parent.name == "UIRoot")
+        {
+            // 濡傛灉鐖惰妭鐐规槸 UIRoot锛屽垯杩斿洖褰撳墠鑺傜偣鐨勫悕绉�
+            return obj.name;
+        }
+        
+
+        return GetGameObjectPath(obj.transform.parent.gameObject) + "/" + obj.name;
+    }
+
+
+    List<NewBieGuide> newbieGuides = null;
+    private Vector2 scrollPosition;
+
+    void DrawNewbieGuides()
+    {
+        if (newbieGuides == null)
+        {
+            newbieGuides = new List<NewBieGuide>();
+            var guides = GuideConfig.GetValues();
+            foreach (var config in guides)
+            {
+                newbieGuides.Add(new NewBieGuide(config.ID));
+            }
+        }
+
+        if (newbieGuides != null)
+        {
+            scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);
+            foreach (var newbieGuide in newbieGuides)
+            {
+                EditorGUILayout.Space();
+                EditorGUILayout.BeginHorizontal();
+
+                EditorGUILayout.Space();
+
+                EditorGUILayout.LabelField("寮曞ID:" + newbieGuide.guideId);
+
+                EditorGUILayout.Toggle("Completed", newbieGuide.completed);
+
+                GUI.skin.button.normal.textColor = newbieGuide.guideId == NewBieCenter.Instance.currentGuide ? Color.red : Color.white;
+
+                if (GUILayout.Button("寮�濮�"))
+                {
+                    newbieGuide.Begin();
+                }
+
+                GUI.skin.button.normal.textColor = Color.white;
+                if (GUILayout.Button("瀹屾垚"))
+                {
+                    newbieGuide.Finish();
+                }
+
+                if (GUILayout.Button("閲嶇疆"))
+                {
+                    newbieGuide.Reset();
+                }
+
+                EditorGUILayout.Space();
+                EditorGUILayout.EndHorizontal();
+            }
+
+            GUILayout.EndScrollView();
+        }
+
+    }
+
+  
+    public class NewBieGuide
+    {
+        public int guideId;
+        public bool completed { get { return NewBieCenter.Instance.completeGuidesBuf.Contains(guideId); } }
+
+        public NewBieGuide(int _guideId)
+        {
+            guideId = _guideId;
+        }
+
+        public void Begin()
+        {
+            if (!NewBieCenter.Instance.CheckGuideCondition(guideId))
+            {
+                Debug.LogError("寮曞鏉′欢涓嶆弧瓒�");
+                return;
+            }
+            NewBieCenter.Instance.StartNewBieGuide(guideId);
+        }
+
+        public void Finish()
+        {
+            NewBieCenter.Instance.FinishNewBieGuide(guideId);
+        }
+
+        public void Reset()
+        {
+            NewBieCenter.Instance.ResetGuide(guideId);
+        }
+    }
+
+
+
+}
diff --git a/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta b/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta
new file mode 100644
index 0000000..9c04435
--- /dev/null
+++ b/Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 710406c165328b24189405363e66239d
+timeCreated: 1511919350
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs b/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs
new file mode 100644
index 0000000..30b9ddb
--- /dev/null
+++ b/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs
@@ -0,0 +1,82 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(NewBieGuideScriptableObject))]
+public class NewBieGuideScriptableObjectEditor : Editor
+{
+    //鍔熻兘锛�1.鏄惁鍔熻兘寮�鍚紝椋炶鐩爣
+    // 2.鏄惁鏆傚仠涓绘垬鍦烘垬鏂�
+    public override void OnInspectorGUI()
+    {
+        var guide = target as NewBieGuideScriptableObject;
+
+        guide.stepId = EditorGUILayout.IntField("姝ラID", guide.stepId);
+        guide.guideType = (GuideType)EditorGUILayout.EnumPopup("寮曞绫诲瀷", guide.guideType);
+        if (guide.guideType == GuideType.NewBie)
+        {
+            //鐐瑰嚮寮曞
+            guide.UIElementPath = EditorGUILayout.TextField("鐐瑰嚮鐩爣璺緞", guide.UIElementPath);
+            guide.clickPosition = EditorGUILayout.Vector2Field("闀傜┖涓績涓庣洰鏍囩殑鍋忕Щ閲�", guide.clickPosition);
+            guide.clickSize = EditorGUILayout.Vector2Field("闀傜┖鍗婂緞", guide.clickSize);
+            guide.tipPosition = EditorGUILayout.Vector2Field("鎻愮ず璇綅缃笌鐩爣鐨勫亸绉婚噺", guide.tipPosition);
+            guide.arrowPosition = (NewBieGuideScriptableObject.ArrowPosition)EditorGUILayout.EnumPopup("寮曞绠ご浣嶇疆", guide.arrowPosition);
+
+            guide.voice = EditorGUILayout.IntField("闊虫晥", guide.voice);
+            guide.effect = EditorGUILayout.IntField("鐐瑰嚮鐗规晥", guide.effect);
+            guide.usherPosition = EditorGUILayout.Vector2Field("鐐瑰嚮鐗规晥涓庣洰鏍囩殑鍋忕Щ閲�", guide.usherPosition);
+            // guide.usherOrientation = (NewBieGuideScriptableObject.UsherOrientation)EditorGUILayout.EnumPopup("鏃犳晥", guide.usherOrientation);
+            // guide.usherAction = EditorGUILayout.IntField("鏃犳晥", guide.usherAction);
+
+            guide.clickAnyWhereComplete = EditorGUILayout.Toggle("鐐瑰嚮浠绘剰浣嶇疆瀹屾垚寮曞", guide.clickAnyWhereComplete);
+            guide.clickCompleteNoMask = EditorGUILayout.Toggle("鐐瑰嚮浠绘剰浣嶇疆瀹屾垚寮曞(鏃犺挋鐗堟ā寮�)", guide.clickCompleteNoMask);
+        }
+        else if (guide.guideType == GuideType.Function)
+        {
+            //鍔熻兘寮�鍚�
+            guide.UIElementPath = EditorGUILayout.TextField("鍔熻兘寮�鍚鍏ョ粓鐐�", guide.UIElementPath);
+
+            guide.clickPosition = EditorGUILayout.Vector2Field("闀傜┖涓績涓庣洰鏍囩殑鍋忕Щ閲�", guide.clickPosition);
+            guide.clickSize = EditorGUILayout.Vector2Field("闀傜┖鍗婂緞", guide.clickSize);
+            // guide.tipPosition = EditorGUILayout.Vector2Field("鏃犳晥", guide.tipPosition);
+            // guide.arrowPosition = (NewBieGuideScriptableObject.ArrowPosition)EditorGUILayout.EnumPopup("鏃犳晥", guide.arrowPosition);
+
+            guide.voice = EditorGUILayout.IntField("闊虫晥", guide.voice);
+            // guide.effect = EditorGUILayout.IntField("鏃犳晥", guide.effect);
+            // guide.usherPosition = EditorGUILayout.Vector2Field("鏃犳晥", guide.usherPosition);
+            // guide.usherOrientation = (NewBieGuideScriptableObject.UsherOrientation)EditorGUILayout.EnumPopup("鏃犳晥", guide.usherOrientation);
+            // guide.usherAction = EditorGUILayout.IntField("鏃犳晥", guide.usherAction);
+
+            // guide.clickAnyWhereComplete = EditorGUILayout.Toggle("鏃犳晥", guide.clickAnyWhereComplete);
+            // guide.clickCompleteNoMask = EditorGUILayout.Toggle("鏃犳晥", guide.clickCompleteNoMask);
+        }
+        else
+        { 
+            //npc瀵硅瘽
+            guide.UIElementPath = EditorGUILayout.TextField("鏃犳晥", guide.UIElementPath);
+            guide.clickPosition = EditorGUILayout.Vector2Field("闀傜┖涓績涓庣洰鏍囩殑鍋忕Щ閲�", guide.clickPosition);
+            guide.clickSize = EditorGUILayout.Vector2Field("闀傜┖鍗婂緞", guide.clickSize);
+            // guide.tipPosition = EditorGUILayout.Vector2Field("鏃犳晥", guide.tipPosition);
+            // guide.arrowPosition = (NewBieGuideScriptableObject.ArrowPosition)EditorGUILayout.EnumPopup("鏃犳晥", guide.arrowPosition);
+
+            guide.voice = EditorGUILayout.IntField("闊虫晥", guide.voice);
+            guide.effect = EditorGUILayout.IntField("寮曞MM澶栬锛堢壒鏁圛D锛�", guide.effect);
+            guide.usherOrientation = (NewBieGuideScriptableObject.UsherOrientation)EditorGUILayout.EnumPopup("寮曞灏忓鏈濆悜", guide.usherOrientation);
+            guide.usherAction = EditorGUILayout.IntField("寮曞灏忓鍔ㄤ綔", guide.usherAction);
+            guide.usherPosition = EditorGUILayout.Vector2Field("寮曞灏忓浣嶇疆", guide.usherPosition);
+            // guide.clickAnyWhereComplete = EditorGUILayout.Toggle("鏃犳晥", guide.clickAnyWhereComplete);
+            // guide.clickCompleteNoMask = EditorGUILayout.Toggle("鏃犳晥", guide.clickCompleteNoMask);
+        }
+
+
+        EditorGUILayout.HelpBox("寮曞姝ラ鐨勬枃鏈唴瀹瑰湪璇█琛ㄤ腑閰嶇疆濡� guide_new_1; 璇█琛ㄦ湭閰嶇疆鍒欎笉浼氭樉绀�", MessageType.Info);
+
+
+        if (GUI.changed)
+        {
+            EditorUtility.SetDirty(target);
+            serializedObject.ApplyModifiedProperties();
+        }
+    }
+}
diff --git a/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta b/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta
new file mode 100644
index 0000000..1827bb2
--- /dev/null
+++ b/Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9389d1a8a10fc6e41877f92c4b874d9f
+timeCreated: 1511794110
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Editor/SpritePacking/SpriteSettings.asset b/Assets/Editor/SpritePacking/SpriteSettings.asset
index 60ce5ff..5606880 100644
--- a/Assets/Editor/SpritePacking/SpriteSettings.asset
+++ b/Assets/Editor/SpritePacking/SpriteSettings.asset
@@ -79,28 +79,6 @@
       maxTextureSize: 2048
       textureCompression: 1
       textureFormat: 50
-  - folderName: 8Words
-    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
   - folderName: Common
     blockOffset: 1
     enableRotation: 0
@@ -190,28 +168,6 @@
       textureCompression: 1
       textureFormat: 50
   - folderName: icon16
-    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
-  - folderName: Important
     blockOffset: 1
     enableRotation: 0
     enableTightPacking: 0
diff --git a/Assets/Editor/UI/PSDTOUGUIProcessor.cs b/Assets/Editor/UI/PSDTOUGUIProcessor.cs
index 9e995f8..47d4560 100644
--- a/Assets/Editor/UI/PSDTOUGUIProcessor.cs
+++ b/Assets/Editor/UI/PSDTOUGUIProcessor.cs
@@ -79,7 +79,7 @@
         return result;
     }
     
-    [UnityEditor.MenuItem("GameObject/鐢熸垚UI鑴氭湰", false, 10)]
+    [UnityEditor.MenuItem("GameObject/鑴氭湰/鐢熸垚UI鑴氭湰", false, 10)]
     public static void GenerateUIScript()
     {
         GameObject go = Selection.activeGameObject;

--
Gitblit v1.8.0