======动态下载====== =====目的===== * 减少包体容量 * 支持英雄等数据的热更新 =====支持下载的类型===== ^名称^类型^路径 ^备注 ^ |英雄立绘 带动画 |Prefab |/Resources/Prefab/HeroAnim/ |最主要的更新内容 | |怪物立绘 带动画 |Prefab |/Resources/Prefab/MonsterAnim/ |同上 | |战斗地图 远景/地面 |Sprite |/Textures/Map/Resources/ |后期地图 | |战斗技能 |Prefab |/Resources/Prefab/UI/Variant/ |注意引用关系 | |常规图标 |Sprite |待定 |待定 | |UI预置体 |Prefab |待定 |待定 | =====工作流===== {{:pasted:20190627-152640.png}} ====数据准备==== 填写原型表 [[generated::ab_config]] //Windows->AssetBundleBrower// 通过Unity 自带的插件AssetBundleBrower,添加需要热更新的数据 {{:pasted:20190627-153031.png}} 可以添加目录或者单个文件,打包信息记录在 目录或者文件的meta文件中,注意上传 {{:pasted:20190627-153202.png}} 针对平台选择Build,输出目录选 AssetBundles\StandaloneWindows 这样的(对应的有iOS和Android) 输出成功以后选择工具(UIGen->UIGenTools) {{:pasted:20190627-153738.png}} * 1 **AB更新ab_config** 读取输出目录中的assetbundle文件和manifest文件,把文件的hash和size更新到ab_config对应平台的对应字段中 * 2 **AB拷贝和上传** 将 Client\UnlimitedPuzzle\AssetBundles\ 下的内容,全部同步到 \Server\PHP\Upload\中 并执行svn的commit指令,等待用户确认添加之后上传。 * 3 **AB清除打包文件** 按照[[generated::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卸载,目前只在退出战斗执行 \\