三国卡牌客户端基础资源仓库
yyl
2025-05-22 e4e502816f0641ee6b76cfae38f290ba8b803af1
Assets/Editor/UI/PSDTOUGUIProcessor.cs
@@ -4,6 +4,8 @@
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
using System.IO;
using System.Text;
public class PSDTOUGUIProcessor
{
@@ -47,4 +49,93 @@
            g.raycastTarget = false;
        }
    }
    [UnityEditor.MenuItem("GameObject/生成UI脚本", false, 10)]
    public static void GenerateUIScript()
    {
        GameObject go = Selection.activeGameObject;
        if (go == null)
        {
            Debug.LogError("请先选择一个GameObject");
            return;
        }
        string className = go.name;
        string targetFolder = Path.Combine(Application.dataPath, "Scripts/Main/UI");
        // 确保目标文件夹存在
        if (!Directory.Exists(targetFolder))
        {
            Directory.CreateDirectory(targetFolder);
        }
        string filePath = Path.Combine(targetFolder, className + ".cs");
        // 检查文件是否已存在
        if (File.Exists(filePath))
        {
            if (!EditorUtility.DisplayDialog("文件已存在", $"文件 {className}.cs 已存在,是否覆盖?", "覆盖", "取消"))
            {
                return;
            }
        }
        // 生成脚本内容
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("using UnityEngine;");
        sb.AppendLine("using System.Collections;");
        sb.AppendLine("using System.Collections.Generic;");
        sb.AppendLine("using UnityEngine.UI;");
        sb.AppendLine("using DG.Tweening;");
        sb.AppendLine("using Cysharp.Threading.Tasks;");
        sb.AppendLine("");
        sb.AppendLine($"public class {className} : UIBase");
        sb.AppendLine("{");
        sb.AppendLine("    // 组件引用");
        sb.AppendLine("");
        sb.AppendLine("    // 生命周期");
        sb.AppendLine("    protected override void Awake()");
        sb.AppendLine("    {");
        sb.AppendLine("        base.Awake();");
        sb.AppendLine("        // 初始化组件引用");
        sb.AppendLine("    }");
        sb.AppendLine("");
        sb.AppendLine("    protected override void Start()");
        sb.AppendLine("    {");
        sb.AppendLine("        base.Start();");
        sb.AppendLine("        // 初始化数据");
        sb.AppendLine("    }");
        sb.AppendLine("");
        sb.AppendLine("    // UI事件");
        sb.AppendLine("    protected override void OnOpen()");
        sb.AppendLine("    {");
        sb.AppendLine("        base.OnOpen();");
        sb.AppendLine("        // 窗口打开时的逻辑");
        sb.AppendLine("    }");
        sb.AppendLine("");
        sb.AppendLine("    protected override void OnClose()");
        sb.AppendLine("    {");
        sb.AppendLine("        base.OnClose();");
        sb.AppendLine("        // 窗口关闭时的逻辑");
        sb.AppendLine("    }");
        sb.AppendLine("");
        sb.AppendLine("    public override void Refresh()");
        sb.AppendLine("    {");
        sb.AppendLine("        base.Refresh();");
        sb.AppendLine("        // 刷新UI显示");
        sb.AppendLine("    }");
        sb.AppendLine("}");
        // 写入文件
        File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
        Debug.Log($"UI脚本已生成: {filePath}");
        // 刷新资源数据库以显示新文件
        AssetDatabase.Refresh();
        // 打开生成的脚本
        UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(filePath, 1);
    }
}