热更新的好处:避免重复打包,减小包体的大小,快速解决bug
环境搭建
vs使用2019以上版本,组件需要新增C++游戏开发
Unity下载
小编使用unity版本是2022.3.32f1c1
小编之前使用2021.3.23f1c1不知道为什么addressable在C#脚本中找不到命名空间,有知道这个问题的小伙伴也可以评论一下
unity版本添加下载WindowsBuildSupport(IL2CPP)模块
HyBirdCLR插件下载
HyBirdCLR官方地址:快速上手 | HybridCLR (code-philosophy.com)
注意:HybirdCLR与一般的插件不同,下载成功后,还需要手动点击安装,才代表真正的安装成功
点击unity顶部栏的Window->Package Manger点击➕,选择Add package from git URL,将下图中蓝色的的地址复制进去,下载。
下载成功后,unity顶部栏出现HybridCLR选项,选择第二个按钮Installer,
点击下方Install,当面板上的PackageVersion出现具体版本好后,代表真正的安装成功
Addressables插件下载
unity的Package Manger的Packages选择Unity Registry搜索Addressables,点击Install
修改环境配置
点击File->Player Setting->Player->Other Setting,找到Configuration,将ScriptingBackend修改为IL2CPP,Api修改为.NET Framework,Allow downloads over Http 修改为Always allowed
找到AddressableAssetSetting
修改里面的参数,勾选上Build Remote catalog,因为我们后续判断是否更新资源就是通过输出的catalog来的,buld&load paths还是选择remote(远程模式),勾选上only update catalogs manually
初始化Addressables,选择Addressables的Groups选项
点击创建
可以选择Rename,修改一下名字,因为热更新都是远程更新,因此一定要将Build&LoadPaths修改为Remote(也就是远程下载)
我这里修改了名字,添加了这个预制体的Cunbe进去
我们点击default build script,我们资源就打包出来呢,那么资源打包到哪里了呢?
在项目Assest同级目录下的SeverDate的对应平台的文件夹下,我这里圈出来的两个文件是我们上面勾选AddressableAssetSettings的catalog才产生的,对比就是靠这hash跟json
创建一个程序集Assembly Definiton
去掉程序集的自动引用
可以在程序集的同级目录下新建一个脚本,那么这个脚本就被当前程序集管理(比如Test脚本就被HotUpdate程序集管理)
点开HyBirdCLR的Settings,将刚刚创建的Assembly Definition添加到热更新的Assembly Definitions
点击HyBirdCLR->Generate->ALL,生成一下对应的dll文件
找到对应的dll文件,文件的具体目录是Assest的同级目录下的HybridCLRData->HotUpdateDlls->d对应平台的文件夹(我这里是PC,所以是StandaloneWindows64)->对应定义的名字
将Dll拖到unity文件夹中,必须在后缀加上.bytes才能被unity识别
本章就到这里了,下章接着讲讲