namespace Editor.UITool { #if UNITY_EDITOR using UnityEditor; using System.Collections.Generic; using System.IO; using UnityEngine; public class UIPrefabToClass { private static StreamWriter writer; //缩写 Obj_ 开头 private static Dictionary TransformDic = new Dictionary(); //缩写 Img_ 开头 private static Dictionary ImageDic = new Dictionary(); //缩写 Btn_ 开头 private static Dictionary ButtonDic = new Dictionary(); //缩写 Txt_ 开头 private static Dictionary TextDic = new Dictionary(); //缩写 Input_ 开头 private static Dictionary InputFieldDic = new Dictionary(); //缩写 Toggle_ 开头 private static Dictionary ToggleDic = new Dictionary(); //缩写 ScrollRect_ 开头 private static Dictionary ScrollRectDic = new Dictionary(); //缩写 LayoutGroup_ 开头 private static Dictionary LayoutGroupDic = new Dictionary(); //缩写 Ani_ 开头 private static Dictionary AnimatorDic = new Dictionary(); //缩写 Sk_ 开头 private static Dictionary SkeletonGraphicDic = new Dictionary(); [MenuItem("Tools/UI/DoPanelClass", priority = 21)] public static void DoPanel() { ChackCode(1); } [MenuItem("Tools/UI/DoItemClass", priority = 22)] public static void DoItem() { ChackCode(2); } public static void ChackCode(int type) { if (writer != null) writer.Close(); var preObj = Selection.activeGameObject; TransformDic.Clear(); ImageDic.Clear(); ButtonDic.Clear(); TextDic.Clear(); InputFieldDic.Clear(); ToggleDic.Clear(); ScrollRectDic.Clear(); LayoutGroupDic.Clear(); AnimatorDic.Clear(); SkeletonGraphicDic.Clear(); string path = "Assets/Scripts/UIScriptBase/"; string fileName = preObj.name + "Logic_Auto.cs"; writer = new StreamWriter(path + fileName); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using System.Linq;"); writer.WriteLine("using UnityEngine;"); writer.WriteLine("using UnityEngine.UI;"); writer.WriteLine("using Spine.Unity;"); writer.WriteLine("using UIScriptBase;"); writer.WriteLine("using TMPro;"); writer.WriteLine(""); if (type == 1) { writer.WriteLine("public partial class " + preObj.name + "Logic: BasePanel"); } else { writer.WriteLine("public partial class " + preObj.name + "Logic: MonoBehaviour"); } writer.WriteLine("{"); DoPrefab(preObj); //变量定义----begin writer.WriteLine(" private RectTransform _offset;"); writer.WriteLine(" private GameObject _root;"); WriterProp(); //变量定义----over writer.WriteLine(""); writer.WriteLine(" private void Awake()"); writer.WriteLine(" {"); //变量实例化----begin if (type == 1) { writer.WriteLine(" _offset = GetCmp(" + '"'+"root" +'"'+");"); writer.WriteLine(" _root = GetObj("+'"'+"root"+'"' +");"); } WriterInstance(); //变量实例化-----over writer.WriteLine(" }"); writer.WriteLine(" private T GetCmp(string path) where T : Component"); writer.WriteLine(" {"); writer.WriteLine(" return UIUtils.GetCmp(this.transform, path);"); writer.WriteLine(" }"); writer.WriteLine(" private GameObject GetObj(string path)"); writer.WriteLine(" {"); writer.WriteLine(" return UIUtils.GetObj(this.transform, path);"); writer.WriteLine(" }"); writer.WriteLine(" private Transform GetTrans(string path)"); writer.WriteLine(" {"); writer.WriteLine(" return UIUtils.GetTrans(this.transform, path);"); writer.WriteLine(" }"); if (type == 1) { writer.WriteLine(" public Transform Root"); writer.WriteLine(" {"); writer.WriteLine(" get"); writer.WriteLine(" {"); writer.WriteLine(" return _offset;"); writer.WriteLine(" }"); writer.WriteLine(" }"); } writer.WriteLine("}"); writer.Close(); var fullDirPath = Path.GetFullPath(path + fileName); System.Diagnostics.Process.Start("explorer.exe", fullDirPath); string log = "输出:" + fileName + "完毕!!"; Debug.LogError($"{log}"); } private static void WriterProp() { foreach (var prop in TransformDic) { writer.WriteLine(" private RectTransform" + " " + "_" +prop.Key + ";"); } foreach (var prop in ImageDic) { writer.WriteLine(" private Image" + " " + "_" +prop.Key + ";"); } foreach (var prop in ButtonDic) { writer.WriteLine(" private Button" + " " + "_" +prop.Key + ";"); } foreach (var prop in TextDic) { writer.WriteLine(" private TextMeshProUGUI" + " " + "_" +prop.Key + ";"); } foreach (var prop in InputFieldDic) { writer.WriteLine(" private InputField" + " " + "_" +prop.Key + ";"); } foreach (var prop in ToggleDic) { writer.WriteLine(" private Toggle" + " " + "_" +prop.Key + ";"); } foreach (var prop in ScrollRectDic) { writer.WriteLine(" private ScrollRect" + " " + "_" +prop.Key + ";"); } foreach (var prop in LayoutGroupDic) { writer.WriteLine(" private LayoutGroup" + " " + "_" +prop.Key + ";"); } foreach (var prop in AnimatorDic) { writer.WriteLine(" private Animator" + " " + "_" +prop.Key + ";"); } foreach (var prop in SkeletonGraphicDic) { writer.WriteLine(" private SkeletonGraphic" + " " + "_" +prop.Key + ";"); } } private static void WriterInstance() { foreach (var prop in TransformDic) { writer.WriteLine(" _" +prop.Key +"= GetCmp(" + prop.Value+");"); } foreach (var prop in ImageDic) { writer.WriteLine(" _" +prop.Key +"= GetCmp(" + prop.Value+");"); } foreach (var prop in ButtonDic) { writer.WriteLine(" _" +prop.Key +"= GetCmp