From abc70a7ffc52c795dc3f8fe32c7151d05c2c49c2 Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 2 Dec 2022 10:33:13 +0800 Subject: [PATCH] =?UTF-8?q?[new]=20=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=A4=96=E9=83=A8=E7=83=AD=E6=9B=B4=E6=96=B0dll?= =?UTF-8?q?=E7=9A=84=E6=90=9C=E7=B4=A2=E8=B7=AF=E5=BE=84=20externalHotUpda?= =?UTF-8?q?teAssembliyDirs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Meta/MetaUtil.cs | 27 ++++++++++++++++++--- Editor/Settings/HybridCLRSettingProvider.cs | 3 +++ Editor/Settings/HybridCLRSettings.cs | 8 +++--- package.json | 2 +- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Editor/Meta/MetaUtil.cs b/Editor/Meta/MetaUtil.cs index 167cc15..233ff88 100644 --- a/Editor/Meta/MetaUtil.cs +++ b/Editor/Meta/MetaUtil.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using UnityEditor; namespace HybridCLR.Editor.Meta { @@ -119,10 +120,30 @@ namespace HybridCLR.Editor.Meta return typeSigs.Select(s => ToShareTypeSig(s)).ToList(); } - public static IAssemblyResolver CreateBuildTargetAssemblyResolver(UnityEditor.BuildTarget target) + public static IAssemblyResolver CreateHotUpdateAssemblyResolver(BuildTarget target) { - return new CombinedAssemblyResolver(new PathAssemblyResolver( - SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)), + var externalDirs = HybridCLRSettings.Instance.externalHotUpdateAssembliyDirs; + var defaultHotUpdateOutputDir = SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target); + if (externalDirs == null || externalDirs.Length == 0) + { + return new PathAssemblyResolver(defaultHotUpdateOutputDir); + } + else + { + var externalDirList = new List(); + foreach (var dir in externalDirs) + { + externalDirList.Add($"{dir}/{target}"); + externalDirList.Add(dir); + } + externalDirList.Add(defaultHotUpdateOutputDir); + return new PathAssemblyResolver(externalDirList.ToArray()); + } + } + + public static IAssemblyResolver CreateBuildTargetAssemblyResolver(BuildTarget target) + { + return new CombinedAssemblyResolver(CreateHotUpdateAssemblyResolver(target), new UnityPluginAssemblyResolver(), new UnityDotNetAOTAssemblyResolver(), new UnityEditorAssemblyResolver()); diff --git a/Editor/Settings/HybridCLRSettingProvider.cs b/Editor/Settings/HybridCLRSettingProvider.cs index 237764d..2543937 100644 --- a/Editor/Settings/HybridCLRSettingProvider.cs +++ b/Editor/Settings/HybridCLRSettingProvider.cs @@ -17,6 +17,7 @@ namespace HybridCLR.Editor private SerializedProperty _hotUpdateAssemblies; private SerializedProperty _preserveHotUpdateAssemblies; private SerializedProperty _hotUpdateDllCompileOutputRootDir; + private SerializedProperty _externalHotUpdateAssembliyDirs; private SerializedProperty _strippedAOTDllOutputRootDir; private SerializedProperty _patchAOTAssemblies; private SerializedProperty _differentialHybridAssemblies; @@ -46,6 +47,7 @@ namespace HybridCLR.Editor _hotUpdateAssemblies = _serializedObject.FindProperty("hotUpdateAssemblies"); _preserveHotUpdateAssemblies = _serializedObject.FindProperty("preserveHotUpdateAssemblies"); _hotUpdateDllCompileOutputRootDir = _serializedObject.FindProperty("hotUpdateDllCompileOutputRootDir"); + _externalHotUpdateAssembliyDirs = _serializedObject.FindProperty("externalHotUpdateAssembliyDirs"); _strippedAOTDllOutputRootDir = _serializedObject.FindProperty("strippedAOTDllOutputRootDir"); _patchAOTAssemblies = _serializedObject.FindProperty("patchAOTAssemblies"); _differentialHybridAssemblies = _serializedObject.FindProperty("differentialHybridAssemblies"); @@ -136,6 +138,7 @@ namespace HybridCLR.Editor EditorGUILayout.PropertyField(_hotUpdateAssemblies); EditorGUILayout.PropertyField(_preserveHotUpdateAssemblies); EditorGUILayout.PropertyField(_hotUpdateDllCompileOutputRootDir); + EditorGUILayout.PropertyField(_externalHotUpdateAssembliyDirs); EditorGUILayout.PropertyField(_strippedAOTDllOutputRootDir); EditorGUILayout.PropertyField(_patchAOTAssemblies); EditorGUILayout.PropertyField(_differentialHybridAssemblies); diff --git a/Editor/Settings/HybridCLRSettings.cs b/Editor/Settings/HybridCLRSettings.cs index 2a7f0a0..d926b69 100644 --- a/Editor/Settings/HybridCLRSettings.cs +++ b/Editor/Settings/HybridCLRSettings.cs @@ -29,6 +29,9 @@ namespace HybridCLR.Editor [Header("热更新dll编译输出根目录")] public string hotUpdateDllCompileOutputRootDir = "HybridCLRData/HotUpdateDlls"; + [Header("外部热更新dll搜索路径")] + public string[] externalHotUpdateAssembliyDirs; + [Header("裁减后AOT dll输出根目录")] public string strippedAOTDllOutputRootDir = "HybridCLRData/AssembliesPostIl2CppStrip"; @@ -39,7 +42,7 @@ namespace HybridCLR.Editor public string[] differentialHybridAssemblies; [Header("差分混合热更新配置数据输出目录")] - public string differentialHybridOptionOutputDir = "Assets/StreamingAssets"; + public string differentialHybridOptionOutputDir = "HybridCLRData/DifferentialHybridOptionDatas"; [Header("生成link.xml时扫描asset中引用的类型")] public bool collectAssetReferenceTypes; @@ -53,9 +56,6 @@ namespace HybridCLR.Editor [Header("AOT泛型实例化搜索迭代次数")] public int maxGenericReferenceIteration = 10; - //[Header("预留MonoPInvokeCallbackAttribute函数个数")] - //public int ReversePInvokeWrapperCount = 10; - [Header("MethodBridge泛型搜索迭代次数")] public int maxMethodBridgeGenericIteration = 10; } diff --git a/package.json b/package.json index 66a9741..18c1324 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.focus-creative-games.hybridclr_unity", - "version": "1.1.3", + "version": "1.1.4", "displayName": "HybridCLR", "description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR", "category": "Runtime",