Преглед на файлове

PackageConfig增加一个按钮,生成PackageType文件

tanghai преди 1 година
родител
ревизия
82c9de94c7
променени са 1 файла, в които са добавени 38 реда и са изтрити 17 реда
  1. 38 17
      Unity/Packages/cn.etetet.core/Editor/PackageConfigEditor/PackageConfigEditor.cs

+ 38 - 17
Unity/Packages/cn.etetet.core/Editor/PackageConfigEditor/PackageConfigEditor.cs

@@ -4,9 +4,10 @@ using UnityEngine;
 
 namespace ET
 {
-    public static class PackageConfigEditor
+    [CustomEditor(typeof(PackageConfig))]
+    public class PackageConfigEditor: Editor
     {
-        [MenuItem("ET/Generate PackageType File")]
+        [MenuItem("ET/Create All PackageType")]
         public static void GeneratePackageTypeFile()
         {
             string[] packageConfigs = AssetDatabase.FindAssets("t:PackageConfig");
@@ -19,24 +20,44 @@ namespace ET
                     continue;
                 }
 
-                string packageTypePath = Application.dataPath + "/../" + $"{Path.GetDirectoryName(path)}" + "/Scripts/Model/Share/PackageType.cs";
-                string dir = Path.GetDirectoryName(packageTypePath);
-                if (!Directory.Exists(dir))
+                string dir = Application.dataPath + "/../" + $"{Path.GetDirectoryName(path)}" + "/Scripts/Model/Share/";
+                CreatePackageTypeFile(dir, config);
+            }
+            Log.Debug("Generate PackageType File Finish!");
+        }
+
+        public static void CreatePackageTypeFile(string dir, PackageConfig config)
+        {
+            if (!Directory.Exists(dir))
+            {
+                Directory.CreateDirectory(dir);
+            }
+
+            using FileStream fileStream = new($"{dir}/PackageType.cs", FileMode.Create);
+            using StreamWriter streamWriter = new(fileStream);
+            streamWriter.WriteLine("namespace ET");
+            streamWriter.WriteLine("{");
+            streamWriter.WriteLine("    public static partial class PackageType");
+            streamWriter.WriteLine("    {");
+            streamWriter.WriteLine("        public const int " + config.Name + " = " + config.Id + ";");
+            streamWriter.WriteLine("    }");
+            streamWriter.WriteLine("}");
+        }
+        
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+            
+            if (GUILayout.Button("Create PackageType"))
+            {
+                PackageConfig packageConfig = (PackageConfig)this.target;
+                if (!packageConfig.CreatePackageTypeFile)
                 {
-                    Directory.CreateDirectory(dir);
+                    return;
                 }
-
-                using FileStream fileStream = new(packageTypePath, FileMode.Create);
-                using StreamWriter streamWriter = new(fileStream);
-                streamWriter.WriteLine("namespace ET");
-                streamWriter.WriteLine("{");
-                streamWriter.WriteLine("    public static partial class PackageType");
-                streamWriter.WriteLine("    {");
-                streamWriter.WriteLine("        public const int " + config.Name + " = " + config.Id + ";");
-                streamWriter.WriteLine("    }");
-                streamWriter.WriteLine("}");
+                string path = AssetDatabase.GetAssetPath(packageConfig);
+                CreatePackageTypeFile(Path.Combine(Path.GetDirectoryName(path), "Scripts/Model/Share/"), packageConfig);
             }
-            Log.Debug("Generate PackageType File Finish!");
         }
     }
 }