Unity中实现HybridCLR热更新

这篇具有很好参考价值的文章主要介绍了Unity中实现HybridCLR热更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:前言

HybridCLR又称作huatuo(华佗)、wolong(卧龙)热更方案,底层是C++编写的,是一种热更新方案,与Lua、ILRuntime等都是不同的热更方案
HybridCLR扩充了il2cpp的代码,使它由纯AOT runtime变成AOT+Interpreter混合runtime,进而支持动态加载assembly,实现热更新

HybridCLR官网

HybridCLR热更原理
IOS不允许JIT的方式编译,因为JIT是需要在运行时动态将IL代码编译为机器码并将其保存在内存中,但是
IOS是不允许执行动态生成的机器码(运行时分配的内存不允许执行),所以相当于变相的封锁了JIT这种编译方式
而HybridCLR是实现了自己的一套解释器去解释执行,解释执行不会在运行时生成额外的本地机器码,而是运行时直接逐行分析并编译成机器码执行,内存中不会保留,因此不受JIT编译的限制


二:什么是热更新

热更新是指当游戏出现bug,或者需要修改,增加某个功能的时候,我们不需要重新下载安装包,就可以更新游戏内容
当游戏上线后,遇见bug或者需要更新内容,一般有两种做法
第一种:重新打包上传一个新的安装包到应用商店(需要审核,费时间),然后让玩家下载新的客户端安装包(需要重新下载,费流量,会减少留存率)
第二种:在游戏内更新,游戏启动时去下载需要更新的补丁包或资源
第一种我们一般在大版本更新时使用,称为游戏整包更新,第二种称为热更新


三:热更新流程

——发现bug并修改bug
——资源打AB包上传,代码使用热更方案上传
——玩家启动游戏检测是否需要更新
——下载补丁包
——检测是否更新成功(例如通过MD5校验)
——进入游戏


四:HybridCLR的优点

——既不用像使用lua方案中需要多学习一门语言,也不用像ILRuntime方案中使用Mono虚拟机,效率低
——正因为HybridCLR是原生runtime级别实现,热更新部分的类型与主工程AOT部分类型是完全等价并且无缝统一的。可以随意调用、继承、反射、多线程,不需要生成代码或者写适配器


五:工具安装和配置HybridCLR环境

工具安装
——Unity版本在2020以上
——Visual Studio必须安装Windows Build Support(IL2CPP)或Mac Build Support(IL2CPP),Mac则需要安装Xcode
——Visual Studio必须在2019版本以上
——Visual Studio必须安装Unity的游戏开发使用c++的游戏开发组件

配置HybridCLR环境
——从Package中安装com.code-philosophy.hybridclr包
https://gitee.com/focus-creative-games/hybridclr_unity.git

https://github.com/focus-creative-games/hybridclr_unity.git
——菜单栏选择HybridCLR—Installer,安装成功后会在控制台打印成功日志
——PlayerSetting—Scripting Backend选择为IL2CPP
——PlayerSetting—Api Compatability Level选择为Net 4.x或.Net Framework
——PlayerSetting—Use Incremental GC选择为不勾选(自v4.0.0起已经支持增量式GC, 但处于beta版本)


六:热更实现

——编写代码,拆分程序集(AOT程序集和热更程序集)
热更的程序集不能被非热更程序集所引用

——配置程序集
点击菜单HybridCLR/Settings打开配置界面,将热更的程序集添加到hotUpdateAssemblyDefinitions或hotUpdateAssemblies中(hotUpdateAssemblies不加dll后缀),
需要注意hotUpdateAssemblyDefinitions和hotUpdateAssemblies两个列表是等价的,不要重复添加


——运行菜单HybridCLR/Generate/All生成热更的dll和AOT的dll以及一些桥接函数,
{project}/HybridCLRData/HotUpdateDlls/StandaloneWindows64目录下的热更dll复制到Assets/StreamingAssets/HotUpdate.dll.bytes
(复制后的dll要加.bytes后缀)


——修改热更代码后。运行菜单命令HybridCLR/CompileDll/ActiveBulidTarget重新编译热更新dll
{project}/HybridCLRData/HotUpdateDlls/StandaloneWindows64目录下的热更dll复制为刚才的打包输出目录的XXX_Data/StreamingAssets/HotUpdate.dll.bytes,重新运行程序


七:注意事项

——热更的程序集不能被非热更程序集所引用
——由于Unity资源管理系统的限制,挂载热更新脚本的资源(场景或prefab)必须打包成ab包,在实例化资源前先加载热更新dll即可,如果不打成ab包会发生scripting missing的错误
文章来源地址https://www.toymoban.com/news/detail-729996.html

到了这里,关于Unity中实现HybridCLR热更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】热更新HybridCLR学习与实战(一)

    从事unity开发以来一直未真正系统的学习过热更新,现在业务上有需要,借此机会来深入学习一下,调研了几种现有比较火的热更新框架,对比了一下优劣,最终决定使用HybridCLR来做热更新,最终目的是要加入到我们已有的项目中,所以肯定要全面实现商业化,因此有同等需

    2024年02月03日
    浏览(26)
  • Unity 热更新 HybridCLR 对接到项目中

    Unity版本 2021.3.6f1 HybridCLR版本 2.2.0 1.1要注意两点: 1.Unity 要安装了Windows-IL2CPP 环境的,这个Unity官网有提供,根据自己Unity版本下载对应的环境即可。 2.il2cpp需要c++的环境库,一般情况不是C开发的,很容易缺失c++的开发环境,因此在打包时会出现 error: could not set up a toolchain

    2024年02月12日
    浏览(33)
  • Unity | YooAssetV2.1.0 + HybridCLR热更新

    目录 一、项目更改 二、使用YooAsset热更 1.资源配置 2.资源构建 3.将两个文件夹下的资源上传CDN服务器 4.修改代码 5.运行效果         本文记录利用YooAsset+HybridCLR来进行资源和dll的更新。YooAsset使用的是新版V2.1.0。相比于旧版,dll(原生文件)和资源要建两个package分别来进行bu

    2024年02月19日
    浏览(27)
  • Unity最新热更新框架 hybridclr_addressable

    GitHub:YMoonRiver/hybridclr_addressable: 开箱即用的商业游戏框架,集成了主流的开发工具。将主流的GameFramework修改,支持Addressable和AssetBundle,已完善打包工具和流程。 (github.com) # 新增GameFramework Addressables 开箱即用 # 新增循环列表 ### UnityGameFramework   **此框架参考:**    `GameFramework

    2024年02月03日
    浏览(33)
  • Unity转微信小游戏 HybridCLR + YooAsset 实践

    参考链接:https://github.com/wechat-miniprogram/minigame-unity-webgl-transform?tab=readme-ov-file Unity 2021.3.15f1c1 Unity 2021.2.5f1c302 wxSDK HybridCLR 5.0.0 YooAsset 1.5.7 后台配置白名单 微信小游戏注意事项: 不支持同步加载。 不支持资源加密。 不支持多Package 关闭WebGL本地缓存 参考地址 因为微信小游戏

    2024年04月12日
    浏览(50)
  • Unity之如何接入HybridCLR(代号wolong,原huatuo)热更新框架

    HybridCLR(代号wolong)是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。 官方提供了完整的教程:HybridCLR快速上手 官方还提供了一个简易的小Demo,演示了如何使用HybridCLR实现热更新。hybridclr_trial 官方文档其实已经非常详细了,我写本文目的主要

    2024年02月12日
    浏览(29)
  • 【Unity3D热更新】Unity3D 零成本、高性能的C#的热更新框架:HybridCLR

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 相信只要做过热更新的小伙伴,都被热更新搞过心态吧。 我有一个小伙伴,本来是面向

    2024年01月16日
    浏览(40)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(51)
  • 【Unity实战篇 】| 游戏中实现镂空遮罩效果【矩形、圆形镂空遮罩】

    前言 本文来写一下怎样在Unity中完成一个 镂空遮罩 的效果。 镂空遮罩 比较常用的有两种ÿ

    2024年02月15日
    浏览(73)
  • 【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

    前言 本文对 Unity引擎 的知识进行了一个整理总结,基本包含了Unity中大部分的知识介绍。 网上也有很多Unity相关的学习资料,但大多数都不成体系,学起来的时候难免会东奔西走的摸不着头脑。 本文整理的多数文章都是有对应的 系列性文章专栏 ,可以更方便的进行系统学习

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包