用户工具

站点工具


asset_download

动态下载

目的

* 减少包体容量

* 支持英雄等数据的热更新

支持下载的类型

名称类型路径 备注
英雄立绘 带动画 Prefab /Resources/Prefab/HeroAnim/ 最主要的更新内容
怪物立绘 带动画 Prefab /Resources/Prefab/MonsterAnim/ 同上
战斗地图 远景/地面 Sprite /Textures/Map/Resources/ 后期地图
战斗技能 Prefab /Resources/Prefab/UI/Variant/ 注意引用关系
常规图标 Sprite 待定 待定
UI预置体 Prefab 待定 待定

工作流

数据准备

填写原型表 ab_config

Windows→AssetBundleBrower

通过Unity 自带的插件AssetBundleBrower,添加需要热更新的数据

可以添加目录或者单个文件,打包信息记录在 目录或者文件的meta文件中,注意上传

针对平台选择Build,输出目录选 AssetBundles\StandaloneWindows 这样的(对应的有iOS和Android)

输出成功以后选择工具(UIGen→UIGenTools)

* 1 AB更新ab_config

读取输出目录中的assetbundle文件和manifest文件,把文件的hash和size更新到ab_config对应平台的对应字段中

* 2 AB拷贝和上传

将 Client\UnlimitedPuzzle\AssetBundles\ 下的内容,全部同步到 \Server\PHP\Upload\中

并执行svn的commit指令,等待用户确认添加之后上传。

* 3 AB清除打包文件

按照ab_config中的 bundle_folder来清理需要热更新的资源。

此步骤只在本地测试BuildMachine做版本之前执行,不要把删除的结果上传服务器。

数据读取

* UIFeatureCommon.SafeSetIcon 主要处理找不到图片的时候,尝试从ab文件中下载读取的情况

* UIPool.LoadJob 主要处理找不到预置体的时候,尝试从ab文件中下载读取的情况

* ABManager有一整套流程进行AB下载

1/ 判断 文件是否在ab_config中
2/ 判断 AB包是否被加载,有则直接读取
3/ 从网络或者缓存 读取 AB包,如果没在缓存,需要标记下载数量
4/ 下载以后异步使用,同步使用的可以先使用Preload的方法,把预置体放到池里

问题和代办事项

1/ BuildMachine 集成,至少做到清理,如果把 打包/更新ab_config/上传服务器 步骤做了更佳

2/ 下载尺寸显示,目前只在MaskBattleLoad页面显示了目前正在队列中还未下载完成的文件容量,下载速度还没计算。另外下载也不是总大小,而是当前步骤堆积在网络中的大小。 可以考虑先堆积在队列中 (低优先)

3/ ab_config 和 AssetBundleBrower的集成配合,目前是各自独立工作,可以考虑通过ab_config自动完成 AssetBundleBrower中的配置(低优先)

4/ 缓存避免下载问题。PC上 Caching.IsVersionCached 永远取不到值,怀疑缓存并没有生效

5/ 缓存清理问题,网上的介绍可以通过现在Cache的尺寸,客户端有指令CleanCache进行测试

6/ AB卸载,目前只在退出战斗执行

asset_download.txt · 最后更改: 2019/06/27 17:11 由 shenmo