您的位置:首页 > 财经 > 金融 > 【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新

【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新

2025/1/3 5:55:44 来源:https://blog.csdn.net/qq992817263/article/details/140084724  浏览:    关键词:【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新

更新日期:2024年7月1日。
Github源码:[点我获取源码]
Gitee源码:[点我获取源码]

索引

  • HybridCLR 热更新
  • 一、启用宏定义
  • 二、导入HybridCLR
  • 三、设置热更新程序集
  • 四、资源、代码热更

HybridCLR 热更新

HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生C#热更方案。

只要简阅官方文档,就会发现项目中接入HybridCLR极其简单,所以在框架中使用HybridCLR热更新并没有做太多的调整,只需要做如下几个简单的步骤即可。

注意,HTFrameworkILHotfixHTFrameworkXLua可选模块已不再支持与维护,HybridCLR官方文档中也有说明如何将基于ILRuntimeXLua热更的项目改进为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热更新的使用要点和注意事项,参考官方文档即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com