通过 启动流程与时序我们知道,在UnityLoader加载过程中存在网络空闲的情况。特别是“引擎初始化和首场景准备”,影响该步骤包括:引擎自身模块与数据初始化,游戏首个场景加载以及Awake流程。这个过程是CPU处理密集,但网络空闲的期间,根据机型性能不同,通常平均耗时会在3~6s左右,我们可以在此阶段提前下载资源。
preloadFiles: -- $PRELOAD_LIST
在Unity转换导出插件填写文件列表,生成时工具会自动从webgl/StreamAssets目录找资源并填充到game.js。 运行时UnityLoader将根据列表内容在网络空闲期下载。
除了在Unity转换导出插件填写文件列表外,也可以在生成的game.js手动配置:
let managerConfig = {
/* 省略其他配置 */
/**
* 假设: AB包打包到 path1/StreamingAssets/WebGL这个目录下; STREAMING_CDN是以path1为根路径上传到服务器的CDN地址
*/
// 需要在网络空闲时预加载的资源,支持如下形式的路径。
preloadDataList: [
// '$STREAM_CDN/StreamingAssets/WebGL/textures_8d265a9dfd6cb7669cdb8b726f0afb1e',
// '/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2'
"$PRELOAD_LIST" // 导出时自动替换
],
}- 若填写完成路径,如
$STREAM_CDN/StreamingAssets/WebGL/textures_8d265a9dfd6cb7669cdb8b726f0afb1e;实际发起预载请求的URL采用填写的地址 - 若填写相对路径,如
/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2;实际发起请求的URL为DATA_CDN/StreamingAssets/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2
- 预下载所有文件总体积应控制在合理范围内,通常可以3~5MB左右的内容。
- 文件数量应控制在10个以内,在此阶段最多只能允许10个并发,超过将会排队。
- UnityLoader插件已经考虑到业务会重复请求预下载的文件,游戏逻辑依然按未使用预下载的异步加载逻辑,无需做其他处理。如果预下载完成UnityLoader会立即构造网络数据返回,业务无感知。
