使用预下载功能
简介
预下载功能的原理是提前通过网络下载资源并缓存到本地,下次使用时从本地缓存中读取文件,以此提高资源加载速度。
抖音33.3.0及以上版本,普通小游戏支持预下载, Unity 小游戏需在抖音33.6.0及以上版本验证。
配置方式
静态配置
game.json 增加 preloadDataList 字段。
参数名 | 数据类型 | 必填 | 默认值 |
preloadDataList | array | 否 | null |
preloadDataList 内存放下载资源的 CDN 地址。
// game.json { "preloadDataList": [ "https://developer3.bytedance.com/abc.png", ... ... ] }
动态配置
针对资源热更的情形,可以通过 game.json 增加 preloadDataListUrl 字段,通过接口返回预下载的资源列表。
参数名 | 数据类型 | 必填 | 默认值 |
preloadDataListUrl | string | 否 | null |
"preloadDataList": [ "https://developer3.bytedance.com/abc.png", ... ... ]
可以在 game.json 中配置该后台接口 url:
// game.json { "preloadDataListUrl": "https://api.example.com/preloadlist" // 如果配置了preloadDataListUrl则preloadDataList不生效 }
后台接口需要返回以下 JSON 格式,才能正确解析:
{ "preloadDataList": ArrayObject }
Unity配置方式
主要配置入口在预加载选项中。(TTSDK版本>=6.3.1)
- •文件列表:使用;间隔,支持模糊匹配,在构建时会将文件列表生成到 game.js 的 managerConfig 配置中
- •游戏资源CDN: 部署资源的CDN前缀,构建时会生成到 game.js 的 managerConfig 配置中,在运行时,会拼接游戏资源CDN与文件列表中的文件路径进行预下载。拼接规则:{DATA_CDN}/StreamingAssets/{FilePath}
- •动态资源列表接口:对应上方的动态配置,在构建时,生成到game.json,需开发者自行部署服务并提供接口,此配置非必需项,可根据实际需要进行配置
预下载时机
- •抖音一次生命周期内普通小游戏冷启时
- •普通小游戏触发新版本的异步更新时
- •Unity小游戏会在wasm代码编译以及callmain时进行预下载
如何验证
普通小游戏
正常调用 tt.request/tt.downloadFile/tt.createImage,都可以命中在 game.json 里配置的预下载资源。
使用非正式版本游戏,配置好 game.json,调用 tt.request/tt.downloadFile/tt.createImage,如果命中配置的 url,可以在 vConsole 观察到“命中预取”。
Unity小游戏
可以通过测试版本的vconsole日志观察:接入预下载后,日志中会包含
JSFW_PreloadManager:
相关的日志描述,其中会包含请求成功或者失败等字样,开发者可根据日志进行调试。Unity小游戏此能力暂时还在实验阶段,若Android/iOS客户端在接入后,发现设备在对照组,可联系技术支持同学加入白名单。Unity小游戏还可以在抖音开发者工具中进行验证,需抖音开发者工具版本>=4.3.8, 可在模拟器预览时,观察日志描述。获取接入情况。
注意事项
- •预下载列表应该尽量只配置游戏 TTI 前依赖的资源,让用户尽快达到游戏可交互的状态,不宜填写 TTI 后的资源,更多带宽占用可能会增加 TTI 的加载耗时。
- •请填写预下载资源的完整路径;Unity小游戏生成到game.js的路径以工具生成的为准,或者按照拼接规则进行手动配置。
- •预下载的所有文件总体积应该控制在 10MB 以内,目前文件最多缓存1天。
- •预下载文件数量应在10个以内,超过10个会排队。
- •预下载会按照列表顺序请求,请将优先需要的资源放在前面。
- •配置预下载后,可能会对配置的 CDN 资源服务器造成一定压力。
- •抖音开发者工具4.3.6版本在 game.json 新增了预下载的代码提示,可以升级获得更好支持。