using UnityEditor; using UnityEngine; using System.IO; namespace Tuan.GameFramework { public class CopyHotDll { [MenuItem("Tools/更新生成PreloadDll")] public static void CopyPreloadDll2Byte() { HybridCLR.Editor.Commands.CompileDllCommand.CompileDllActiveBuildTarget(); string sourceDir = $"{Application.dataPath.Replace("/Assets", "")}/HybridCLRData/HotUpdateDlls/{UnityEditor.EditorUserBuildSettings.activeBuildTarget}/GameScripts.Preload.dll"; string destDir = $"{Application.dataPath}/GameRes/Preload/HotUpdateDll/GameScripts.Preload.bytes"; if (File.Exists(destDir)) { File.Delete(destDir); } File.Copy(sourceDir, destDir); AssetDatabase.Refresh(); Debug.Log($"copy {sourceDir} to {destDir}"); } [MenuItem("Tools/更新生成MainDll")] public static void CopyMainDll2Byte() { HybridCLR.Editor.Commands.CompileDllCommand.CompileDllActiveBuildTarget(); string sourceDir = $"{Application.dataPath.Replace("/Assets", "")}/HybridCLRData/HotUpdateDlls/{UnityEditor.EditorUserBuildSettings.activeBuildTarget}/GameScripts.Main.dll"; string destDir = $"{Application.dataPath}/GameRes/Main/HotUpdateDll/GameScripts.Main.bytes"; if (File.Exists(destDir)) { File.Delete(destDir); } File.Copy(sourceDir, destDir); AssetDatabase.Refresh(); Debug.Log($"copy {sourceDir} to {destDir}"); } [MenuItem("Tools/更新生成补充数据源")] public static void CopyDepDll2Byte() { HybridCLR.Editor.Commands.CompileDllCommand.CompileDllActiveBuildTarget(); string sourceDir = $"{Application.dataPath.Replace("/Assets", "")}/HybridCLRData/AssembliesPostIl2CppStrip/{UnityEditor.EditorUserBuildSettings.activeBuildTarget}/"; string destDir = $"{Application.dataPath}/GameRes/Main/HotUpdateDll/"; foreach (string dll in HotDllLoader.Inst.DepDlls) { string sourcePath = $"{sourceDir}/{dll}"; string destPath = $"{destDir}/{dll}.bytes"; if (File.Exists(sourcePath)) { if (File.Exists(destPath)) { File.Delete(destPath); } File.Copy(sourcePath, destPath); AssetDatabase.Refresh(); Debug.Log($"copy {sourcePath} to {destPath}"); } } Debug.Log("copy over"); } } }