AlicizaX/Client/Assets/Scripts/Startup/Framework/Procedure/HotfixHelper.cs

61 lines
2.6 KiB
C#
Raw Normal View History

2025-01-23 19:06:48 +08:00
// using System;
// using System.Linq;
// using System.Reflection;
// using AlicizaX.Runtime;
// using HybridCLR;
//
// namespace Unity.Startup.Procedure
// {
// public static class HotfixHelper
// {
// const string HotfixName = "Unity.Hotfix";
//
// public static async void StartHotfix()
// {
// if (ApplicationHelper.IsEditor)
// {
// var assemblies = Utility.Assembly.GetAssemblies();
// foreach (var assembly in assemblies)
// {
// if (assembly.GetName().Name.Equals(HotfixName, StringComparison.OrdinalIgnoreCase))
// {
// Run(assembly);
// break;
// }
// }
//
// return;
// }
//
// Log.Info("开始加载AOT DLL");
//
// var aotDlls = AOTGenericReferences.PatchedAOTAssemblyList.ToArray();
// foreach (var aotDll in aotDlls)
// {
// Log.Info("开始加载AOT DLL ==> " + aotDll);
// var assetHandle = GameApp.Resource.LoadAssetAsyncHandle<UnityEngine.Object>(Utility.Asset.Path.GetAOTCodePath(aotDll));
// var aotBytes = assetHandle.GetAssetObject<UnityEngine.TextAsset>().bytes;
// RuntimeApi.LoadMetadataForAOTAssembly(aotBytes, HomologousImageMode.SuperSet);
// }
//
// Log.Info("结束加载AOT DLL");
// Log.Info("开始加载Unity.Hotfix.dll");
// var assetHotfixDllPath = Utility.Asset.Path.GetCodePath(HotfixName + Utility.Const.FileNameSuffix.DLL);
// var assetHotfixDllOperationHandle = GameApp.Resource.LoadAssetAsyncHandle<UnityEngine.Object>(assetHotfixDllPath);
// var assemblyDataHotfixDll = assetHotfixDllOperationHandle.GetAssetObject<UnityEngine.TextAsset>().bytes;
// Log.Info("开始加载程序集Hotfix");
// var hotfixAssembly = Assembly.Load(assemblyDataHotfixDll, null);
// Run(hotfixAssembly);
// }
//
// private static void Run(Assembly assembly)
// {
// Log.Info("加载程序集Hotfix 结束 Assembly " + assembly.FullName);
// var entryType = assembly.GetType("Hotfix.HotfixLauncher");
// Log.Info("加载程序集Hotfix 结束 EntryType " + entryType.FullName);
// var method = entryType.GetMethod("Main");
// Log.Info("加载程序集Hotfix 结束 EntryType=>method " + method?.Name);
// method?.Invoke(null, null);
// }
// }
// }