HybridCLR热更方案 学习笔记
跟着官方步骤走就行
https://hybridclr.doc.code-philosophy.com/docs/intro
https://github.com/focus-creative-games/hybridclr_unity.git
focus-creative-games/hybridclr_unity
注:
1.以下为 截止2023-08-07前的整理结果
2.社区版不支持增量式GC
3.不支持在热更新脚本中定义extern函数,可以在热更中调用
4.[RequireComponent(typeof(AAA))
] 要求AAA必须已经在别处资源中实例化或者AddComponent过,否则Unity无法识别AAA为脚本而忽略处理
5.官方仅支持LTS版本,部分接近的其他小版本有可能正常工作, 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x全系列LTS版本
测试环境:
1.Unity 2021.3.f1c1 (安装Windows Build Support(IL2CPP)模块)
2.Rider 2023.1.1
3.VS 模块安装:使用Unity的游戏开发
和 使用c++的游戏开发
组件
4.git (拉插件本体用的com.code-philosophy.hybridclr
,有插件本体就用不到了)
安装与配置
-
安装
com.code-philosophy.hybridclr
包 unity ⇒packageManager ⇒AddPackage from git url ⇒‣ 或者克隆下来文件夹重命名为 com.code-philosophy.hybridclr,拖进package文件夹 -
打开菜单
HybridCLR/Installer...
, 点击安装
按钮进行安装。 耐心等待30s左右,安装完成后会在最后打印安装成功
日志。 -
创建热跟程序集并配置
-
添加热更资源、热更代码
注意: 1.热更新脚本挂载到Resources等随主包的资源上,会发生scripting missing的错误 2.挂载热更新脚本的资源(场景或prefab)必须打包成ab 3.可调用AddComponent 动态挂载热更新脚本 4.热更代码加载完成后、执行任何热更新代码前 使用com.code-philosophy.hybridclr包中的 HybridCLR.RuntimeApi.LoadMetadataForAOTAssembly函数为AOT泛型补充元数据。
-
打包流程
- 打首包:
- 运行菜单
HybridCLR/Generate/All
进行必要的生成操作。这一步不可遗漏!!! - 将
{proj}/HybridCLRData/HotUpdateDlls/StandaloneWindows64(MacOS下为StandaloneMacXxx)
目录下的 热更程序集.dll 复制到Assets/StreamingAssets/
热更程序集.dll.bytes
,注意,要加.bytes
后缀!!! - 打开
Build Settings
对话框,点击Build And Run
,打包并且运行热更新示例工程。
- 运行菜单
- 补充包:
- 修改热更代码、资源后
- 运行菜单
HybridCLR/Generate/All
进行必要的生成操作。 - 将
{proj}/HybridCLRData/HotUpdateDlls/StandaloneWindows64(MacOS下为StandaloneMacXxx)
目录下的 热更程序集.dll 复制到打包路径/StreamingAssets/
热更程序集.dll.bytes
- 运行加载即可完成热更新
- 打首包: