更新日期:2024年7月1日。
Github源码:[点我获取源码]
Gitee源码:[点我获取源码]
索引
- HybridCLR 热更新
- 一、启用宏定义
- 二、导入HybridCLR
- 三、设置热更新程序集
- 四、资源、代码热更
HybridCLR 热更新
HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生C#热更方案。
只要简阅官方文档,就会发现项目中接入HybridCLR
极其简单,所以在框架中使用HybridCLR
热更新并没有做太多的调整,只需要做如下几个简单的步骤即可。
注意,
HTFrameworkILHotfix
及HTFrameworkXLua
可选模块已不再支持与维护,HybridCLR
官方文档中也有说明如何将基于ILRuntime
或XLua
热更的项目改进为HybridCLR
热更。
一、启用宏定义
定义宏HOTFIX_HybridCLR
,以告诉框架当前已启用HybridCLR
热更新(该宏在预定义列表中,可直接点击Use进行定义
):
HTFramework
框架采用了单一入口场景的策略,且框架的初始化、生命周期
等会在进入入口场景时优先执行,那么我们的一些需要热更的资源或代码,很可能在还未进行热更的前提下,便已被框架加载调用。
所以,定义宏HOTFIX_HybridCLR
后,再运行程序进入入口场景,主框架将处于静默
状态,以等待进行自定义的资源更新、代码更新
的完成。
二、导入HybridCLR
完成了上一步宏定义后,此时我们查看主模块Main的检视面板,便会发现多出了HybridCLR
的分页:
此处显示的HybridCLR
并未导入,我们点击Quick Start按钮跳转到HybridCLR
的官方页面,开始导入并快速体验HybridCLR
热更新。
导入成功后,在检视面板上便能够看到当前导入的HybridCLR
版本:
三、设置热更新程序集
同HybridCLR
一样,在主程序发布前,你需要告诉框架所有热更新程序集的名称,在如下位置即可设置:
四、资源、代码热更
然后,由于我们定义了宏HOTFIX_HybridCLR
,框架运行时已进入静默
状态,此时所有模块皆是不可使用的(比如不能使用WebRequest
模块去下载文件)。
所以需要自己实现资源、代码热更
的逻辑,比如:
- 1.从资源服务器下载最新AB包到本地
Application.persistentDataPath
路径(框架的AB包加载根路径默认为此); - 2.从资源服务器下载最新的热更程序集到本地,路径随意,但下载完成后最好立即
Assembly.Load
。
如上的资源、代码热更
完成后,只需调用如下一句,便可使框架解除静默
状态,并开始所有生命周期:
//HybridCLR 热更新程序集已加载完成
Main.Current.HybridCLRCompleted();
框架生命周期开始后,会立即进入默认流程
,此时即使默认流程类型
存在于热更新程序集
中也能正确加载,因为我们已经在框架静默
时将热更新程序集Assembly.Load
了。
如此,整个框架便完全适配HybridCLR
热更新了,其他关于HybridCLR
热更新的使用要点和注意事项,参考官方文档即可。