三国卡牌客户端基础资源仓库
hch
6 天以前 967b0232d8e24e2b1e89c6656fa62f02492bfcb5
257 子 【配套功能】新手引导 / 【常规】引导
3个文件已修改
4个文件已添加
340 ■■■■ 已修改文件
Assets/Editor/InvalidScriptScanner.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/SpritePacking/SpriteSettings.asset 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/UI/PSDTOUGUIProcessor.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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()
    {
        // 创建设置窗口
Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs
New file
@@ -0,0 +1,182 @@
using 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("请先选择一个GameObject");
                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);
        }
    }
}
Assets/Editor/ScriptEditor/NewBieGuideEditorWindow.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 710406c165328b24189405363e66239d
timeCreated: 1511919350
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs
New file
@@ -0,0 +1,82 @@
using 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外观(特效ID)", 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();
        }
    }
}
Assets/Editor/ScriptEditor/NewBieGuideScriptableObjectEditor.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9389d1a8a10fc6e41877f92c4b874d9f
timeCreated: 1511794110
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
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
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;