HybridCLR 热更新配置

开始前准备

配置 HybridCLR

1. 新建一个unity项目。

2. 安装 hybridclr_unity

  • 点击菜单 Windows/Package Manager 弹出窗口
  • 点击左上角的加号,选择Add package from git url...
https://gitee.com/focus-creative-games/hybridclr_unity
  • 输入上方url,点Add或者按回车键,等待加载完成。
    在这里插入图片描述

因为网络问题无法加载的
用将 hybridclr_unity 库clone或者下载到本地,选择Add package from disk...,找到库中的 package.json,选中打开即可。

3. 配置 PlayerSettings

  • 关闭增量式GC(Use Incremental GC) 选项。因为目前不支持增量式GC。WebGL平台忽略此选项。
  • Scripting Backend切换为il2cpp。WebGL平台不用设置此选项。
  • Api Compatability Level切换为.Net 4.Net Framework(打主包时可以使用.net standard,但使用脚本Compile热更新dll时必须切换到.Net 4.Net Framework)。如果你一定要热更新部分也使用.net standard也可以,官方说是找他们商业化服务。

注意:不管构建那个平台,都要设置。

4. 安装 HybridCLR

  • 点击菜单HybridCLR/Installer…,弹出安装界面。点击安装,等待安装完成。

5. 导入2个工具库

  • 下载官方示例 hybridclr_trial
  • Packagescom.gwiazdorrr.betterstreamingassetsUnity-Logs-Viewer文件夹,复制到新项目的 Packages中。
    在这里插入图片描述

com.gwiazdorrr.betterstreamingassets:加载插件
Unity-Logs-Viewer:日志插件

  • Assets 下的 EditorHotUpdateImagesMainPrefabsScenes文件夹和 link.xml 文件,复制到新项目的 Assets 中。
  • 等待编译完成。

这里可以对项目整理一下。
删除多余的场景:SampleScene
删除多余的节点:GameObject、ScreenLog
删除Reporter节点,重新创建一个,防止后边报错。

6. 创建 Hotfix.dll

  • 选中 HotUpdate 文件夹,右键,选择Creator/Assembly Definition,创建 Hotfix.dll 文件。
  • 选中 Hotfix.dll 文件,在Inspector面板上勾选Allow 'unsafe' Code选项。
  • Use GUIDs下添加MainHybridCLR.RuntimeBetterStreamingAssets引用,然后点Apply保存。
    Hotfix.dll

7. 配置 HybridCLR

  • 点击菜单HybridCLR/Settings,弹出设置界面。
  • 找到热更新Assembly Definitions(Hot Update Assembly Definitions),将 Hotfix.dll 文件添加进去。
  • 找到补充元数据AOT dlls(Patch AOT Assemblies),将mscorlibSystemSystem.Core名字添加进去。
    配置 HybridCLR

8. 安装 YooAsset

  • 打开管理界面 Edit/Project Settings/Package Manager,输入以下内容,点Save保存。

Name: package.openupm.cn
URL: https://package.openupm.cn
Scope(s): com.tuyoogame.yooasset

ProjectSettings/PackageManager

  • 打开管理界面 Windows/Package Manager,点击加号右边的按钮,选择 My Registries 下的 YooAsset,点击Install,等待安装完成。
    PackageManager

  • 分别在 Hotfix.dllMain.dll 文件中添加 YooAsset 的引用。

YooAsset:这是一个资源打包管理的插件,详细使用出门右转(传送门)。

扫描二维码关注公众号,回复: 15903223 查看本文章

9. 修改 LoadDll.cs

  • 修改后的 LoadDll.cs(传送门)
  • 复制全部代码到项目中的 LoadDll.cs注意:项目中 LoadDll.cs 代码全被覆盖,不要了。
  • 打开 LoadDll.cs 脚本,将DefaultHostServerFallbackHostServer的值修改为资源服务器上AB包的地址。
  • 打开 Main 场景,选择 LoadDll 节点,在Inspector面板上修改Play ModeHost Play Mode
    LoadDll 节点

Play Mode:资源运行模式
EditorSimulateMode:编辑器模式
OfflinePlayMode:离线模式
HostPlayMode:在线模式

10. 配置 YooAsset

YooAsset 的使用不多讲,这里只是简单使用。配置前,先在 Assets 下新建文件夹 DllBytes

  • 点击菜单 YooAsset/AssetBundle Collector,打开 资源包收集工具 弹窗。
  • 勾选前三个选项
  • 添加 Packages
  • 添加 Groups
    Group Name:ABGroup
    Group Desc:AB包资源
    [+],将 Prefabs 文件夹拖进去
  • 添加 Groups
    Group Name:DllGroup
    Group Desc:Dll文件
    [+],将 DllBytes 文件夹拖进去,改第三个选为打包原生文件
  • 点右上角Save保存
    资源包收集工具

11. Generate/AllBuild

  1. 点击菜单 HybridCLR/Generate/All,等待编译生成。
  2. BuildAssetsCommand.cs 脚本 20行加代码
public static string DllBytesOutputDir => Application.dataPath + "/DllBytes";
  1. BuildAssetsCommand.cs 脚本 72行改代码
[MenuItem("HybridCLR/Build/BuildAssetsAndCopyToStreamingAssets")]
// 改为
[MenuItem("HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir")]
  1. BuildAssetsCommand.cs 脚本 76行注释代码
//BuildAssetBundleByTarget(target); //因为使用了YooAsset,所以Build AssetBundle不需要在这里进行。
  1. BuildAssetsCommand.cs 脚本 83行注释代码
//CopyAssetBundlesToStreamingAssets(target); //前边没了Build,这里就没有要复制的对象了。
  1. BuildAssetsCommand.cs 脚本 99行改代码
string aotAssembliesDstDir = Application.streamingAssetsPath;
// 改为
string aotAssembliesDstDir = DllBytesOutputDir;
  1. BuildAssetsCommand.cs 脚本 120行改代码
string hotfixAssembliesDstDir = Application.streamingAssetsPath;
// 改为
string hotfixAssembliesDstDir = DllBytesOutputDir;
  1. BuildPlayerCommand.cs 脚本 24行注释代码
//[MenuItem("HybridCLR/Build/Win64")] //经上面改动这里可能存在问题。
  1. HotUpdateMain.cs 脚本 16行注释代码
//gameObject.AddComponent<CreateByCode>(); //等下做热更新测试会取消注释。
  1. 点击菜单 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待编译生成。
  2. 点击菜单 YooAsset/AssetBundle Builder,打开 资源包构建工具 弹窗。
    Build Mode第一次必要时,选 Force Rebuild,其他时候选 Incremental Build,设置版本号,点 Save构建,完成时会弹出打包输出文件夹。

Force Rebuild —— 强制重新构建
Incremental Build —— 增量构建
Dry Run Build —— 演练构建
Simulate Build —— 模拟构建

12. 验证是否成功

  • 将打包出来的文件放到资源服务器上,直接运行unity,在Console中会有下载相关日志。
  • 打PC包出来,运行,使用鼠标在屏幕上画圈查看日志,也会有下载相关日志。

以上两种方式运行后,会看到最后一条日志有以下字样:
=======看到此条日志代表你成功运行了示例项目的热更新代码=======

  • HotUpdatePrefab 预制件上,随便做出点修改,例如:创建 ImageText
  • HotUpdateMain.cs 脚本 16行,取消注释代码
  • HotUpdateMain.cs 脚本 Start 函数最后一行,加上自定义的日志(随便啥都行,只要不报错)。

这些操作是来模拟平时开发做出的修改。

  • 点击菜单 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待编译生成。
  • 点击菜单 YooAsset/AssetBundle Builder,打开 资源包构建工具 弹窗,Build Mode选择 Incremental Build,设置版本号,点击 构建
  • 将新打包出来的文件放到资源服务器上,运行PC包测试,在日志上你会看到 CreateByCode.cs 中的输出日志、你自定义的输出日志,还有你对 HotUpdatePrefab 预制件的修改。
  • 此时,以上操作没有问题,就说明 HybridCLR 热更新 配置好了。

结束

以上就是配置 HybridCLR 热更新 的记录
如有侵权,联系删除
如有错误、不当之处,敬请指导
如在构建AssetBundle和dll文件时有更好的方式,可以联系,一起探讨学习

猜你喜欢

转载自blog.csdn.net/weixin_43830069/article/details/129855550