hybridCLR热更

多种热更方案:

Lua方案:Lua虚拟机+Lua代码

ILRuntime(.net虚拟机:面临跨域问题需要写适配器等问题)

HybridCLR:不需要像lua一样安装lua虚拟机;AOT代码变成静态代码

原理:

hybridCLR是IL2CPP技术的进一步修改,扩充了il2cpp的代码,使他由纯AOT runtime变成AOT+Interpreter混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不进能再android平台,也能再ios、console 等现在的JIT平台上高效地以AOT+interpreter混合模式执行,从底层彻底的支持热更新。其他热更方案是独立的VM,与il2cpp关系本质上相当于mono中嵌入lua的关系。因此类型系统不统一,为了让热更新类型能够继承AOT部分类型,需要写适配器,并且解释器中的类型不能为主工程的类型系统所识别。特性不完整 ,开发麻烦,运行效率低下。

链接:

HybridCLR热更新 原理及示例分析 huatuo之AOT泛型限制及原理介绍 huatuo热更框架安装 GameFramework框架接入HybridCLR热更框架

下载:

gitee/HybridCLR hybridclr_trial工程

关于作者:

walon :Code Philosophy(代码哲学官网) 创始人

毕业于清华大学物理系,2006年CMO金牌,奥数国家集训队成员,保送清华基科班。专注于游戏技术,擅长开发架构和基础技术设施。

现在已经是比较稳定的beta版本,预计正式版在8月份。目前已经支持pc和安卓及ios。已知有十几个项目在移动平台完整运行起来了。

yoyo工程位置:

百度网盘>工作>me>HybridCLR>My projecthuatuo.zip

unity2020.3.31f1c1

快速上手

报错

报错1:

No ‘git‘ executable was found. Please install Git on your system then restart 问题搜索,重启电脑就可以了

Git下载地址

Project has invalid dependencies No git executable was found

解决1:

未安装点击安装hybridclr

hybridclr->generate->all

hybridclr->build->buildassetscopytostreamingassets

点击windows上的hybridclr-》build->win64

报错2:

Building Library\Bee\artifacts\WinPlayerBuildProgram\mpmc6\bt9a_o_vm6.lump.obj failed with output:

xg9o_vm6.lump.cpp原因是vs2022的问题

HybridCLR 使用流程记录(一)

解决2:

用vs2019就好了 或者是在vs2022里写一个脚本直接扔到工程的Assets文件夹下就可以了,脚本如下,就可以打包出来了hybridclr-》build->win64

Workaround for building with IL2CPP with Visual Studio 2022 17.4

 快速上手流程

  1. 创建空的Unity项目。
  2. 创建ConsoleToScreen.cs脚本,打印日志到屏幕上,方便定位错误
  3. 场景中创建一个空GameObject,将ConsoleToScreen挂到上面
  4. 创建 Assets/HotUpdate 目录,在目录下 右键 Create/Assembly Definition ,创建一个名为HotUpdate的程序集模块
  5. Windows/Package Manager > https://github.com/focus-creative-games/hybridclr_unity.git
  6. HybridCLR/Installer
  7. 打开菜单 HybridCLR/Settings, 在Hot Update Assemblies配置项中添加HotUpdate程序集
  8. 如果你用的hybridclr包低于v4.0.0版本,关闭GC
  9. Scripting Backend 改 IL2CPP
  10. Api Compatability Level  .Net 4.x 或者.Net Framework
  11. 创建热更新脚本Hello.cs
  12. 创建Assets/LoadDll.cs脚本,然后在main场景中创建一个GameObject对象,挂载LoadDll脚本。--显然,主工程不能直接引用热更新代码。有多种方式可以从主工程调用热更新程序集中的代码,这里通过反射来调用热更新代码。
  13. Editor中试运行运行main场景,屏幕上会显示 'Hello,HybridCLR',表示代码工作正常。
  14. 打包运行
  15. HybridCLR/Generate/All
  16. {proj}/HybridCLRData/HotUpdateDlls/StandaloneWindows64(MacOS下为StandaloneMacXxx)目录下的HotUpdate.dll复制到Assets/StreamingAssets/HotUpdate.dll.bytes
  17. Build And Run->打包到{proj}->Release-Win64文件夹中
  18. 修改代码Debug.Log("Hello, World");
  19. HybridCLR/CompileDll/ActiveBulidTarget重新编译热更代码
  20. 从项目中复制HotUpdate.dll到发布的HotUpdate.dll.bytes
  21. 重新运行程序热更新代码生效!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值