HybridCLR 热更新配置

开始前准备配置 HybridCLR1. 新建一个unity项目。2. 安装 hybridclr_unity3. 配置 PlayerSettings4. 安装 HybridCLR5. 导入2个工具库6. 创建 Hotfix.dll7. 配置 HybridCLR8. 安装 YooAsset9. 修改 LoadDll.cs10. 配置 YooAsset11. `Generate/All` 和 `Build`12. 验证是否成功

结束

开始前准备

unity、vshybridclrhybridclr_trialhybridclr_unityYooAsset

配置 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将 Packages 中 com.gwiazdorrr.betterstreamingassets 和 Unity-Logs-Viewer文件夹,复制到新项目的 Packages中。

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

将 Assets 下的 Editor、HotUpdate、Images、Main、Prefabs、Scenes文件夹和 link.xml 文件,复制到新项目的 Assets 中。等待编译完成。

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

6. 创建 Hotfix.dll

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

7. 配置 HybridCLR

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

8. 安装 YooAsset

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

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

打开管理界面 Windows/Package Manager,点击加号右边的按钮,选择 My Registries 下的 YooAsset,点击Install,等待安装完成。 分别在 Hotfix.dll、Main.dll 文件中添加 YooAsset 的引用。

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

9. 修改 LoadDll.cs

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

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/All 和 Build

点击菜单 HybridCLR/Generate/All,等待编译生成。在 BuildAssetsCommand.cs 脚本 20行,加代码

public static string DllBytesOutputDir => Application.dataPath + "/DllBytes";

在 BuildAssetsCommand.cs 脚本 72行,改代码

[MenuItem("HybridCLR/Build/BuildAssetsAndCopyToStreamingAssets")]

// 改为

[MenuItem("HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir")]

在 BuildAssetsCommand.cs 脚本 76行,注释代码

//BuildAssetBundleByTarget(target); //因为使用了YooAsset,所以Build AssetBundle不需要在这里进行。

在 BuildAssetsCommand.cs 脚本 83行,注释代码

//CopyAssetBundlesToStreamingAssets(target); //前边没了Build,这里就没有要复制的对象了。

在 BuildAssetsCommand.cs 脚本 99行,改代码

string aotAssembliesDstDir = Application.streamingAssetsPath;

// 改为

string aotAssembliesDstDir = DllBytesOutputDir;

在 BuildAssetsCommand.cs 脚本 120行,改代码

string hotfixAssembliesDstDir = Application.streamingAssetsPath;

// 改为

string hotfixAssembliesDstDir = DllBytesOutputDir;

在 BuildPlayerCommand.cs 脚本 24行,注释代码

//[MenuItem("HybridCLR/Build/Win64")] //经上面改动这里可能存在问题。

在 HotUpdateMain.cs 脚本 16行,注释代码

//gameObject.AddComponent(); //等下做热更新测试会取消注释。

点击菜单 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待编译生成。点击菜单 YooAsset/AssetBundle Builder,打开 资源包构建工具 弹窗。 Build Mode:第一次 或 必要时,选 Force Rebuild,其他时候选 Incremental Build,设置版本号,点 Save、构建,完成时会弹出打包输出文件夹。

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

12. 验证是否成功

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

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

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

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

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

结束

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

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: