Unity huatuo 革命性热更系列2

1.2 huatuo热更环境安装与示例项目

  上一节我们分析了huatuo的原理与优势,相信大家迫不及待想体验一下huatuo热更新,本节我们来安装huatuo的开发环境,然后运行示例项目,来体验下huatuo做热更新。

huatuo 热更开发环境的安装

使用huatuo之前,我们先准备好开发环境,Unity版本,官方的huatuo版本采用的是unity 2020.3.33f1的这个版本,建议大家也用这个版本来做。安装好visual studio 2019开发环境,并且安装C/C++的开发工具集合。安装Unity的时候,我们一定要勾选上Windows IL2CPP,方便我们等下在Windows平台上测试。接下来下载huatuo相关代码, huatuo主要是改造了IL2CPP,所以依赖的代码库如下:

  1. huatuo核心代码库,负责指令转换,解释执行,源码下载
  2. IL2CPP_huatuo: huatuo针对IL2CPP的修改与改动,源码下载
  3. huatuo-tutorial: huatuo热更新的示例项目,源码下载;

下载完成后,你将获得3个源码包,如图所示1.2-1:

解压huatuo项目的源码包,解压il2cpp_huatuo项目源码包。解压后,将huatuo项目子文件夹”huatuo”,复制到il2cpp_huatuo项目的libil2cpp目录下。如图1.2-2所示:

准备好libil2cpp的huatuo环境后,我们把这个文件夹”libil2cpp”拷贝到Unity引擎的IL2CPP对应的目录下,拷贝之前,记得先备份原来的。如图1.2-3,Unity编辑器2020.3.33 il2cpp中的libil2cpp。

到此huatuo的开发环境就准备好了。

运行huatuo热更示例项目

  Huatuo开发环境安装好了以后,接下来我们就可以运行实例项目,实例项目很简单,我们解压代码包huatuo_trial, 解压开来后用Unity 2020.3.33打开这个项目,项目的目录结构如图1.2-4:

进入文件夹”HuatuoData”后,运行init_local_il2cpp_data脚本,这样就生成了Localil2cppData文件夹。

接下来我们就用Unity打开huatuo的实例项目,在测试热更新的时候,先配置一下项目的基本的配置(当然示例项目已经配置好了,但是我们自己项目还是要注意)如图1.2-7。

由于huatuo是基于IL2CPP 来扩展解释执行IL的.dll。这个时候我们就需要把一些我们可能要热更的部分进行拆分,这里使用unity的ADF机制,每创建一个.asmdef文件,Unity就会为你生成一个新的.net项目工程,这样做的好处就可以分功能来进行代码热更(比如大厅+子游戏,可以把每个子游戏分成对应的.dll),同时分功能来编译,不至于修改功能A的代码要所有的项目都编译,导致后期开发越来越慢。

这样我们就已经把项目分按功能划分成了几个工程,然后可以打包出来每个工程的基于IL的.dll库。这样就可以针对要热更的.dll来做加载。

我们正式项目的时候,可以把这些.dll利用AOT一起编译,如果要热更某个库,先判断一下是否服务器上有最新的.dll,如果有就可以在运行的时候加载这个,否者就跑默认的AOT后的代码就可以了(获得更好的AOT级别的性能,毕竟解释执行IL指令,性能也有开销)。

  接下来我们来试试热更新, 示例项目扩展了一个菜单,可以打包出所有项目的IL指令代码的.dll, 这个菜单扩展为”Huatuo”---> “CompileDall”, 这样就可以把当前的所有项目的.dll全部打出来,不管你是否热更新。生成了IL的.dll后,我们如果将这些.dll打包成资源包,部署到服务器上,从资源包里加载IL代码到IL2CPP VM就可以实现热更了,所以又有一个菜单”Huatuo”---> “BuildBundles”, 会把这些.dll打出ab包。(这里是示例,不是规定必须要这样做,不同的项目可以更具你自己来定制,后续做框架时我教自己的策略,在这个案例中会把.dll打包到common ab包中,我们来看下common ab包的mainifest。)

接下来测试下热更新, 编译完成.dll与打包ab包后,我们发布一个win的版本我们加它1.0,build的出来后,运行下过如下:

第一版中打印,有######,接下来我去掉这个######,然后重新编译,打包Hotfix.dll到新common ab包,并直接复制common ab包到打包后的StreammingAssets下,如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity华佗新是指利用Unity游戏引擎提供的华佗技术实现的新功能。新是指在游戏发布后,通过网络下载新的资源文件或者代码来新游戏内容,而无需重新下载整个游戏。 Unity华佗新的优点是可以快速修复游戏中的bug,增加新的功能和内容,提升游戏的体验,而无需用户重新下载和安装整个游戏。这样可以大大减少用户的等待时间和网络流量的消耗。另外,Unity华佗新还能够提升游戏的可持续性,降低开发和发布新版本的成本。 Unity华佗新的实现原理是游戏客户端通过连接服务器,检查版本新信息。如果有新版本可用,游戏客户端会下载新的资源文件或者代码,并进行新操作。新完成后,游戏客户端可以重新加载新的资源文件或者代码,使得游戏立即生效。 使用Unity华佗新需要注意安全性问题,防止恶意篡改游戏资源或者代码。为了保证安全,可以利用数字签名和加密等方式来验证资源的完整性和真实性。另外,还可以在游戏客户端内置一些反作弊的机制,防止使用非法资源或者代码。 总之,Unity华佗新是一种非常方便和高效的游戏新方式。它能够快速修复游戏中的问题,提升游戏的体验,并降低开发和发布新版本的成本。但是在使用时需要注意安全性问题,确保游戏资源和代码的完整性和真实性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值