obsidian/笔记文件/2.笔记/Unity资源热更及代码热更_第三章.md
2025-03-26 00:02:56 +08:00

3.8 KiB
Raw Permalink Blame History

之前解析了,打普通包,和热更包,对应的具体逻辑; 开始使用一下; 打初始包的入口;

!Pasted image 20240421155537.png

!Pasted image 20240421155642.png

完成打包后对应的ab包生成、存放在这个文件夹

!Pasted image 20240421155714.png

对应上者ab包所有的md5码列表生成的bytes文件存放在Version版本对应的文件夹下

!Pasted image 20240421155930.png

代码上这里定义了加载AB包的路径是streamingAssetsPath文件夹对应了unity的StreamingAssets位置

!Pasted image 20240421160031.png

!Pasted image 20240421160125.png

全选复制ab包粘贴到StreamingAssets文件夹自动生成对应的meta文件

!Pasted image 20240421160158.png

!Pasted image 20240421160302.png

在ResourceManager资源管理器的具体逻辑里这个m_LoadFormAssetBundle布尔是判断是否要加载ab包修改设置为true即可

!Pasted image 20240421160327.png

HotFixPanel预制体是对应热更进游戏前的进度条下载、加载逻辑相关

!Pasted image 20240421160448.png

对应的脚本是HotFixUi具体逻辑存在Unity_Editor的宏测试阶段先调用StartOnFinish函数接口最终会调用游戏开始ab资源加载入口

!Pasted image 20240421160539.png

!Pasted image 20240421160658.png

存储资源依赖相关的是m_ResouceItemDic字典容器其中对应的资源ResouceItem逻辑结构包含crc校验码guid切换场景是否清除等字段

!Pasted image 20240421160910.png

!Pasted image 20240421164118.png

继续还有一个RefCount获取器调用的m_RefCount总数指的是资源的调用次数

!Pasted image 20240421164330.png

开始游戏后这是加载ab资源相关的入口

!Pasted image 20240421161004.png

LoadAssetBundleConfig函数接口拿到ab包所在位置通过AES加密算法的AESFileByteDecrypt函数接口完成资源解密

!Pasted image 20240421161023.png

继续调用内置接口完成解序列化的相关操作再构建ResouceItem资源实体添加到m_ResouceItemDic资源字典容器即可

!Pasted image 20240421164529.png

运行游戏这就已经是从ab包加载图片了

!Pasted image 20240421164859.png

然后,开始测试热更包,右键点击,选择画图编辑,修改

!Pasted image 20240421165017.png

!Pasted image 20240421175719.png

!Pasted image 20240421175732.png

打开文件需要用到WindowsFile的脚本逻辑其中的OpenFileName类包含打开文件的各个相关属性

!Pasted image 20240421181053.png

调用导入的是windows内置的打开文件对话框需要依赖于Comdlg32.dll 程序集

!Pasted image 20240421221334.png

!Pasted image 20240421221740.png

打资源热更包的入口

!Pasted image 20240422133623.png

声明的仨变量分别是md5码路径、热更版本号、OpenFileName是上述解析的用于windows打开对话框的相关类

!Pasted image 20240422133704.png

OnGUI的编辑器刷新逻辑完成ABMD5的路径选择资源热更补丁的版本设定最后再调用BundleEditor.Build的函数接口即可 第一个传参hotfix的布尔为true就会调用之前解析过的ReadMd5Com函数接口逻辑对比已有的ab包根据md5差异生成资源热更包

!Pasted image 20240422133834.png

!Pasted image 20240422134055.png

入口,表现

!Pasted image 20240422142412.png

!Pasted image 20240422142458.png

选对应版本的ABMd5列表对应的bytes文件即可

!Pasted image 20240422142535.png

!Pasted image 20240422142609.png

打包完成之后,生成的文件和路径

!Pasted image 20240422142629.png