HybridCLR热更详解
HybridCLR热更方案详解
一、热更流程
程序入口
初始化AOT脚本
Ahead of time 运行前编译
- 下载热更资源
不论是美术资源还是热更dll都是打包成AB包下载到本地
- 加载热更dll
1 |
|
- 加载补充原数据dll
如果热更程序集引用了AOT程序集就需要执行该步骤
1 |
|
- 加载热更场景,执行热更代码
AOT代码无法直接调用热更代码,一般在下载完所有资源,热更代码都加载完成后,通过加载热更资源中的场景,场景上挂载热更脚本,进行后续的游戏初始化
二、程序集
- 程序集划分
对于热更只需要考虑如何划分AOT程序集和JIT程序集
- AOT程序集一般包含基础框架和第三方插件等不会有大变动的内容
- JIT程序集作为热更相关程序集
- Assembly-CSharp
该程序集是Unity默认的特殊程序集,我们自行添加的代码如果没有专门划分程序集,就都会被丢入这个程序集或 ~-Editor 程序集
如果勾选了Auto Referenced,默认程序集可以访问项目内所有的程序集,相当于位于程序集引用关系的顶部
一般来说将这该程序集定义为AOT程序集,不引用任何热更程序集,下载热更资源和加载dll等操作就均可以在这里去实现
- Assembly Definition
.asmdef文件 将项目脚本分成具有明确定义的依赖关系的多个程序集,以确保在脚本中进行更改时仅重建对应的程序集,以此减小编译时间
- 添加自定义宏(Define Constraints)
- 添加程序集依赖(Assembly Definition References)
- 选择目标平台(Platform)
HybridCLR热更详解
https://baifabaiquan.cn/2023/03/15/HybridCLR详解/