以下是Main程序集(Aot程序集)里面的热更新载入流程的第一个脚本“LoadDll”脚本 using System.Collections;using System.Collections.Generic;using UnityEngine;using HybridCLR;using Cysharp.Threading.Tasks;using YooAsset;//注意这个脚本是Main程序集中的脚本(你可以创建一个Main程序集,在Main程序集的文件夹下创建这...
interr=HybridCLR.RuntimeApi.LoadMetadataForAOTAssembly(dllBytes,HomologousImageMode.SuperSet); Debug.Log($"LoadMetadataForAOTAssembly:{aotDllName}. ret:{err}"); } } } 现在你可以在热更新代码随意使用AOT泛型了。 提示 请保存打包时生成的裁剪后的AOT dll(一般在{project}/HybridCLRData/AssembliesPostIl...
通过AOTHomologousImage::RegisterLocked 将补充元数据程序集添加到列表,并且可以通过AOTHomologousImage::FindImageByAssemblyLocked,根据原始的AOT程序集的元数据Il2CppAssembly查到对应的补充元数据程序集。代码实现如下: std::vector<AOTHomologousImage*> s_images; AOTHomologousImage* AOTHomologousImage::FindImageByAss...
Unity打包时会裁剪一些类型,注意在link.xml进行保护,或者在主程序集中使用 使用未在主程序集中使用过的泛型时需要补充泛型所在程序集的aot dll 不同BuildTarget的AOT DLL不可复用 Android和Windows经过实践好像可以复用 携带热更新程序集dll中的Component的资源(Prefab,Scebe,So)不能放到主包,加载资源之前需要先加载热...
支持独创的 Differential Hybrid Execution(DHE) 差分混合执行技术,即可以对AOT dll任意增删改,会智能地让未改动的函数以AOT方式运行,变化或者新增的函数以interpreter模式运行,让热更新的游戏逻辑的运行性能基本达到原生AOT的水平 支持热重载 技术,可以100%卸载程序集 支持现代的dll加密技术,有效保障代码安全 支持的版本...
每个Rule包含多个程序集的访问控制规则。每个Rule会计算出一个限制访问的类型集合,最终的限制访问的集合为所有Rule的并集,即只要某个Rule限制访问某个类型, 则最终不允许访问这个类型。 名称类型可空描述 id属性否Rule的id。字符串类型,不可为空,必须全局唯一 ...
点击菜单HybridCLR/Settings打开配置界面,将热更的程序集添加到hotUpdateAssemblyDefinitions或hotUpdateAssemblies中(hotUpdateAssemblies不加dll后缀), 需要注意hotUpdateAssemblyDefinitions和hotUpdateAssemblies两个列表是等价的,不要重复添加 ——运行菜单HybridCLR/Generate/All生成热更的dll和AOT的dll以及一些桥接函数, ...
等待生成完成,这会在项目的 Assets 同级目录下创建一个 HybridCLRData 文件夹,其中包含AOT所需的文件。7. 验证安装 你可以通过编写一个简单的脚本来验证HybridCLR是否安装成功: csharp using UnityEngine; public class TestHybridCLRRuntime : MonoBehaviour { void Start() { Debug.Log("HybridCLR is running: ...
Huatuo热更新原理 Huatuo的集成与扩展 Huatuo热更新框架通过扩展IL2CPP虚拟机的服务,使其具备了在不改变原始数据内存对象的前提下,解释执行IL代码的功能。这使得热更新过程能同时包含AOT代码执行、解释执行的IL指令以及原有的数据内存对象三部分。通过利用Unity ADF(程序集定义文件)机制,将某部分代码单独...
1. 游戏中只需要编写一种代码,且与Unity自身调用效率更高(直接调用AOT代码,不需要warper) 2. 可动态新增加数据类型(如新的MonoBehaviour而不需要重新打整包),此项HybridCLR是通过修改il2cpp工具实现的,在il2cpp执行时创建新增的元数据类型。 unity打包后会将所有的元数据类型定义到Data\Managed\Metadata\global-metad...