资源管理以及热更新
2021-12-30 09:31:20 3 举报
zzk
作者其他创作
大纲/内容
读取S目录和P目录下的版本信息
初始化渠道
break
ChanelManager记录P目录下的版本信息
资源模块清理
什么时候卸载AB包?在ABManager的AB包加载队列中,当AB包加载器加载AB包成功后,会将该ABLoader对该AB包的引用-1,然后尝试卸载当AB包被卸载后,会把依赖AB包的引用计数-1,然后尝试卸载
P目录版本信息是否低于S目录
编辑器工具
加载工具脚本Common下的工具类大部分自定义结构体在这里使用
网络模块
资源加载模块,开始加载,加载成功后。设置isDownlogina = false
为该AB的依赖AB创建AB加载器
全是默认
C#
否
更新资源
删除P目录以及更新版本数据
PackageUtil的RunAllChecker开始检测所有的AB打包配置
将Loader添加到资源加载器队列中
是否编辑器模式
是
清理AB对象,清理资源缓冲,清理一切数据结构
CheckAssetBundles类
创建资源加载loader
是否模拟模式
资源是否被缓存过
加载资源映射文件
初始化SDK
LoadPB()
加载Loading
开一个数据接收服务器数据ReceiveThread
AB之间的引用,指的是AB包加载器之间的引用关系。注意,AB加载器对自己的AB包也有一个引用
开始热更新
加载通知面板
添加下个下载请求
开始lua逻辑
如果下载队列为空,说明下载完成
加载所有的AssetBundleDispatcherConfig
Connect
引用AB加载器
下载完成,写入p目录
是否是编辑器模式
设置常驻包
StartGame
当一个AB包,被一个以上的AB依赖时,我们就认为它是一个常驻包
资源管理模块,使用S目录重新初始化
加入到AB加载器队列中
运行阶段启动流程
设置isDownlogina = true
创建AB加载器
Common.Main.lua
GameMain.lua
启动XluaManager
AssetBundleDispatcher负责根据SOC,生成AB标签
updater.StartCheckUpdate()
加载AB清单对应的AB包
拿到AB名字和资源名字
初始化 清单对象和资源映射管理类
AB加载成功后,会把AB包中所有的资源缓存;每个AB包都有自己的引用计数,当引用计数为0时,就会卸载非常驻包
Do Noting
得到服务器下载地址,下载服务器版本信息;然后对比,看是否下载过游戏或者需要更新游戏
最终在HjNetWorkBase的UpdatePackage拿到干净的二进制数据
ABManager的初始化
S目录只在发布APK时有用,开发时无用处
依赖
如果下载队列中的数量小于最大下载数量
判断下载请求队列中是否完成下载
加载Global模块加载全局的命名空间和对象
输出目录是打包资源时的输出目录
加载资源
初始化版本信息
下载APK安装
GameMain.Start()
是否是大版本更新
LuaUpdate
0 条评论
下一页