开始前准备
- unity、vs
- hybridclr
- hybridclr_trial
- hybridclr_unity
- YooAsset
配置 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<CreateByCode>(); //等下做热更新测试会取消注释。
- 点击菜单 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 函数最后一行,加上自定义的日志(随便啥都行,只要不报错)。
这些操作是来模拟平时开发做出的修改。文章来源:https://www.toymoban.com/news/detail-497590.html
- 点击菜单 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待编译生成。
- 点击菜单 YooAsset/AssetBundle Builder,打开 资源包构建工具 弹窗,Build Mode选择
Incremental Build
,设置版本号,点击构建
。 - 将新打包出来的文件放到资源服务器上,运行PC包测试,在日志上你会看到 CreateByCode.cs 中的输出日志、你自定义的输出日志,还有你对 HotUpdatePrefab 预制件的修改。
- 此时,以上操作没有问题,就说明 HybridCLR 热更新 配置好了。
结束
以上就是配置 HybridCLR 热更新 的记录
如有侵权,联系删除
如有错误、不当之处,敬请指导
如在构建AssetBundle和dll文件时有更好的方式,可以联系,一起探讨学习文章来源地址https://www.toymoban.com/news/detail-497590.html
到了这里,关于HybridCLR 热更新配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!