HybridCLR 热更新接入指南

1,927 阅读2分钟

HybridCLR 热更新新人指南

自己没有想到在技术路的最后一程还能遇到转折点,那就是莫名其妙的要学习Unity3D承接别人给外包留下的元宇宙项目。我自然就是从0开始正式踏入了游戏开发之旅了,这个项目用到阿里达摩院的基座,里面有热更新的模块。

我自然需要了解一番,那就是用到的HybridCLR。这玩意第一眼看到还以为阿里用到的Hybrid App,用H5做的里面的电商系统呢。

后来才发现是一款热更新框架,已经淘汰了用Lua热更新的技术了。我也不用学那撇脚的Lua语法,我心里面也是暗爽。

下面是元宇宙设计的大致架构,自然还是有很多细节技术支撑的。

image-20230428135420351

说了背景一大堆,现在正式开始进入正题。

指南的测试环境

  • macOS 13.3
  • Unity 2021.3.16f1c1 (LTS)
  • HybridCLR 2.1.0

主要参考官方示例 github.com/focus-creat…

1 安装

在全新的Unity工程进行测试的,没有做其他情况测试。

1.1 安装hybridclr_unity

创建一个新的工程我就省略了不写了

我们就只说一下通过Gitee URL方式进行安装,其他的可以看一下官方文档focus-creative-games.github.io/hybridclr/h…

1.2 初始化HybridCLR

image-20230428161121010

image-20230428161137027

HybridCLR Installer 只需要执行一次安装即可

1.3 安装BetterStreamingAssets

1.4 安装HybridCLR-HotReload 资源包

  • 1.4.1 从下面链接下载资源包

    github.com/josercc/Hyb…

  • 1.4.2 将资源包导入到工程

  • 1.4.3 打开Assets/Scenes/Main.scene 作为主场景(可以删除自动生成的SimpleScene.scene场景了)

2 配置

打开Build Setting

image-20230428161419102

打开Play Settings

image-20230428161502305

2.1 关闭GC

image-20230428161642517

2.2 设置为IL2CPP

image-20230428161734501

2.3 设置为.Net Framwork

image-20230428161844251

2.4 配置HybridCLR

image-20230504140052254

2.4.1 配置热更新Dlls

image-20230504140109457

2.4.2 配置补充元数据AOT Dlls

image-20230504140236552

3 使用

3.1 CompileDLL

image-20230504135705394

3.2 Generate

image-20230504140332624

3.3 Build Stream Asset

image-20230504140552175

4 测试

4.1 运行测试

4.1.1 运行工程

image-20230504140750906

4.1.2 修改代码运行

我们在HotUpdateMain.cs添加下面代码

image-20230504140957505

再次运行代码

image-20230504141044575

此时已经达到运行时候测试热更新,是不是觉得和平时没什么区别,请看一下下面的测试。

4.2 发布测试

4.2.1 打包发布

image-20230504141217815

image-20230504141318918

image-20230504141419932

名字可以随便取

运行 App.app进行测试

image-20230504141724741

image-20230504141757701

你是不是没看到这是热更新的输出!这个输出,因为刚才我们没有重新打包。

4.2.2 热更新替换

4.2.2.1 重新进行Build Stream Asset

image-20230504142000874

4.2.2.2 复制资源文件到App

复制Assets/StreamingAssets下的所有文件到xxx/App.app/Contents/Resources/Data/StreamingAssets下面

image-20230504142212966

4.2.2.3 重新运行App

image-20230504142304249

此时已经做到重新运行热更新了

结语

其实每个平台热更新后面步骤还是不一样的,这一篇文章可以作为一个参考。