Przeglądaj źródła

自动把包中的引用更新到Assets中对应的asmdef中去

tanghai 1 rok temu
rodzic
commit
d0579461ee

+ 4 - 1
Unity/Assets/Scripts/Hotfix/Unity.Hotfix.asmdef

@@ -18,5 +18,8 @@
         "UNITY_COMPILE || UNITY_EDITOR"
     ],
     "versionDefines": [],
-    "noEngineReferences": true
+    "noEngineReferences": true,
+    "optionalUnityReferences": [],
+    "additionalReferences": [],
+    "compilerOptions": ""
 }

+ 4 - 1
Unity/Assets/Scripts/HotfixView/Unity.HotfixView.asmdef

@@ -22,5 +22,8 @@
         "UNITY_COMPILE || UNITY_EDITOR"
     ],
     "versionDefines": [],
-    "noEngineReferences": false
+    "noEngineReferences": false,
+    "optionalUnityReferences": [],
+    "additionalReferences": [],
+    "compilerOptions": ""
 }

+ 4 - 1
Unity/Assets/Scripts/Model/Unity.Model.asmdef

@@ -17,5 +17,8 @@
         "UNITY_COMPILE || UNITY_EDITOR"
     ],
     "versionDefines": [],
-    "noEngineReferences": true
+    "noEngineReferences": true,
+    "optionalUnityReferences": [],
+    "additionalReferences": [],
+    "compilerOptions": ""
 }

+ 4 - 1
Unity/Assets/Scripts/ModelView/Unity.ModelView.asmdef

@@ -19,5 +19,8 @@
         "UNITY_COMPILE || UNITY_EDITOR"
     ],
     "versionDefines": [],
-    "noEngineReferences": false
+    "noEngineReferences": false,
+    "optionalUnityReferences": [],
+    "additionalReferences": [],
+    "compilerOptions": ""
 }

+ 13 - 0
Unity/Packages/com.et.core/Scripts/HotfixView~/Unity.HotfixView.asmdef

@@ -0,0 +1,13 @@
+{
+    "references": [
+        "Unity.ThirdParty",
+        "Unity.Core",
+        "Unity.Mathematics",
+        "Unity.Loader",
+        "MemoryPack",
+        "Unity.Model",
+        "Unity.Hotfix",
+        "Unity.ModelView",
+        "YooAsset"
+    ]
+}

+ 9 - 0
Unity/Packages/com.et.core/Scripts/Hotfix~/Unity.Hotfix.asmdef

@@ -0,0 +1,9 @@
+{
+    "references": [
+        "Unity.Core",
+        "Unity.Mathematics",
+        "MemoryPack",
+        "Unity.Model",
+        "Unity.ThirdParty"
+    ]
+}

+ 10 - 0
Unity/Packages/com.et.core/Scripts/ModelView~/Unity.ModelView.asmdef

@@ -0,0 +1,10 @@
+{
+    "references": [
+        "Unity.ThirdParty",
+        "Unity.Core",
+        "Unity.Mathematics",
+        "Unity.Loader",
+        "Unity.Model",
+        "YooAsset"
+    ]
+}

+ 8 - 0
Unity/Packages/com.et.core/Scripts/Model~/Unity.Model.asmdef

@@ -0,0 +1,8 @@
+{
+    "references": [
+        "Unity.ThirdParty",
+        "Unity.Core",
+        "Unity.Mathematics",
+        "MemoryPack"
+    ]
+}

+ 8 - 0
Unity/Packages/com.et.loader/Scripts/Editor/AsmdefEditor.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c95794299f33df0429cfc7fa63bf5223
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 95 - 0
Unity/Packages/com.et.loader/Scripts/Editor/AsmdefEditor/AsmdefEditor.cs

@@ -0,0 +1,95 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+namespace ET.Loader
+{
+    public class AssemblyDefinitionAsset
+    {
+        public string name;
+        public string rootNamespace;
+        public string[] references;
+        public string[] includePlatforms;
+        public string[] excludePlatforms;
+        public bool allowUnsafeCode;
+        public bool overrideReferences;
+        public string[] precompiledReferences;
+        public bool autoReferenced;
+        public string[] defineConstraints;
+        public string[] versionDefines;
+        public bool noEngineReferences;
+        public string[] optionalUnityReferences;
+        public string[] additionalReferences;
+        public string compilerOptions;
+    }
+
+    public class AllRefInfo
+    {
+        public Dictionary<string, HashSet<string>> References = new();
+        
+        public AllRefInfo()
+        {
+            foreach (string assName in AsmdefEditor.AssNames)
+            {
+                References[assName] = new HashSet<string>();
+            }
+        }
+    }
+    
+    public static class AsmdefEditor
+    {
+        public static readonly string[] AssNames = { "Model", "ModelView", "Hotfix", "HotfixView" };
+        public static readonly string[] PackagePaths = { "Packages", "Library\\PackageCache" };
+        
+        // 自动把各个包中的引用加到Assets对应的包中去,后面搞个编辑器来编辑每个包的引用
+        [MenuItem("ET/Update Assembly Definition")]
+        public static void UpdateAssemblyDefinition()
+        {
+            AllRefInfo allRefInfo = new();
+
+            foreach (var packagePath in PackagePaths)
+            {
+                foreach (string directory in Directory.GetDirectories(packagePath, "com.et.*"))
+                {
+                    foreach (string assName in AssNames)
+                    {
+                        string p = Path.Combine(directory, "Scripts/" + assName + "~/Unity." + assName + ".asmdef");
+                        if (!File.Exists(p))
+                        {
+                            continue;
+                        }
+
+                        string json = File.ReadAllText(p);
+                        AssemblyDefinitionAsset assemblyDefinitionAsset = JsonUtility.FromJson<AssemblyDefinitionAsset>(json);
+
+                        foreach (string reference in assemblyDefinitionAsset.references)
+                        {
+                            allRefInfo.References[assName].Add(reference);
+                        }
+                    }
+                }
+            }
+
+            foreach (string assName in AssNames)
+            {
+                string p = Path.Combine("Assets/Scripts/" + assName + "/Unity." + assName + ".asmdef");
+                if (!File.Exists(p))
+                {
+                    continue;
+                }
+
+                string json = File.ReadAllText(p);
+                AssemblyDefinitionAsset assemblyDefinitionAsset = JsonUtility.FromJson<AssemblyDefinitionAsset>(json);
+
+                assemblyDefinitionAsset.references = allRefInfo.References[assName].ToArray();
+
+                File.WriteAllText(p, JsonUtility.ToJson(assemblyDefinitionAsset, true));
+            }
+            
+            AssetDatabase.SaveAssets();
+            AssetDatabase.Refresh();
+        }
+    }
+}

+ 11 - 0
Unity/Packages/com.et.loader/Scripts/Editor/AsmdefEditor/AsmdefEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 18bfe6d021de1174f8a5de372e9ea6ad
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: