热更流程完成
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
using HybridCLR;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -7,26 +8,34 @@ using YooAsset;
|
||||
|
||||
public class HotDllLoader : Singleton<HotDllLoader>
|
||||
{
|
||||
public void LoadDll(ResourcePackage package, string dll)
|
||||
public List<string> DepDlls = new List<string>()
|
||||
{
|
||||
"mscorlib.dll",
|
||||
"System.dll",
|
||||
"System.Core.dll",
|
||||
};
|
||||
public async UniTask LoadDll(ResourcePackage package, string dll)
|
||||
{
|
||||
if (package.GetAssetInfo(dll).Error == string.Empty)
|
||||
{
|
||||
AssetHandle handle = package.LoadAssetSync<TextAsset>(dll);
|
||||
AssetHandle handle = package.LoadAssetAsync<TextAsset>(dll);
|
||||
await handle.ToUniTask();
|
||||
#if UNITY_EDITOR
|
||||
Assembly hotUpdateAss = System.AppDomain.CurrentDomain.GetAssemblies().First(a => a.GetName().Name == dll.Replace(".dll", ""));
|
||||
#else
|
||||
Assembly hotUpdateAss = Assembly.Load((handle.AssetObject as TextAsset).bytes);
|
||||
#endif
|
||||
Debug.Log($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{dll}");
|
||||
Debug.Log($"加载{dll}");
|
||||
}
|
||||
}
|
||||
public void LoadDepDll(ResourcePackage package, List<string> dlls)
|
||||
public async UniTask LoadDepDll(ResourcePackage package)
|
||||
{
|
||||
foreach (string dll in dlls)
|
||||
foreach (string dll in DepDlls)
|
||||
{
|
||||
if (package.GetAssetInfo(dll).Error == string.Empty)
|
||||
{
|
||||
AssetHandle handle = package.LoadAssetSync<TextAsset>(dll);
|
||||
AssetHandle handle = package.LoadAssetAsync<TextAsset>(dll);
|
||||
await handle.ToUniTask();
|
||||
RuntimeApi.LoadMetadataForAOTAssembly((handle.AssetObject as TextAsset).bytes, HomologousImageMode.SuperSet);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user