包体资源加载
1、背景介绍
由于Unity导出来的webgl文件较大,无法满足平台包体限制,目前游戏上架会限制主包的大小(4M),标准如下:
包体类型 | 包体大小 | 备注 |
---|---|---|
普通包 | 包体<4MB | 打包后rpk只有一个包体 |
分包 | 主包<4MB + 所有分包<16MB;unity分包小游戏:主包<4mb + 所有分包<30MB | 打包后rpk包含:主包+分包+兼容整包(开平上传时不计算该包体) |
为解决以上限制,资源按需加载优化策略提出将以下两个文件放到vivo分包
或者自有CND
上进行异步加载:
xxx.data.unityweb:主要是Unity游戏导出的游戏场景资源
xxx.code.unityweb:主要是Unity游戏导出的代码文件
为此unity插件转换工具,提供额外了多种首包资源加载方式,如下图所示:
- 方式一:整包加载:表示所以资源都打到一个完整的rpk中,此方式打包的包体较大,不适用大部分unity小游戏;
- 方式二:vivo分包(推荐);
- 方式三:自定义CDN分包。
2、vivo分包(推荐)
(该方案适用于无自有CDN的场景)当选择该方式时,需要注意是,当导出的xxx.data.unityweb(即webgl.data)部分>20MB时,建议存放到自有CDN服务器上;
导出vivo小游戏后,会在src目录下生成unitySubPkg文件夹,如下图所示:
若填写了webgl.zip URL以后,在src同级目录下会多出gzip目录,该目录下资源上传到自有CDN上,URL对应此CDN的资源地址,如下图所示:
注:未获得CDN资源地址之前可以写一个示例地址方便打包出gzip目录,示例地址如:http://10.15.xx.xx:8080/wasm.zip
并在打包成rpk时将unitySubPkg自动打成unitySubPkg.rpk分包且运行时会自动加载。该方案基于vivo小游戏的分包方案,其原理参考vivo小游戏分包能力。
此方式打包生成的最终rpk解压后如下图所示:
其中:
- com.application.demo.vivominigame.rpk: 为整包,上传到开屏,作为兜底方案,不记录包体
- main.rpk: 为分包后的主包
- unitySubPkg.rpk: 为分包后的子包,游戏运行时加载
注意事项
需要控制该unitySubPkg分包大小在30M以内,否则会上传失败;当分包unitySubPkg超过30M,需要对其中的xxx.data.unityweb,xxx.code.unityweb进行大小上的优化:
- xxx.data.unityweb:主要是Unity游戏导出的游戏场景资源,可以使用使用Addressable按需加载和使用AssetBundle按需加载进行资源远程加载,或者使用纹理优化工具优化纹理大小;
- xxx.code.unityweb:主要是Unity游戏导出的代码文件,导出文件时删除不必要的平台插件,代码压缩等级等设置,详细参考运行性能优化;。
3、自定义CDN分包
当选择自定义CDN分包方式导出vivo小游戏时,会出现CND地址的输入框。如下所示:
自定义CDN分包方式指的是开发者需要基于自有的CDN,将原本打在整包中的WASM资源上传到CDN,然后将资源地址配置到输入框中,其目的是为了减小整包大小,小游戏引擎会远程下载该文件并加载。如下示例:
注
:建议前期调试使用整包加载,使用本地wasm文件进行调试。
wasm资源准备
当选择自定义CDN分包方式导出vivo小游戏后,会在webgl_vivo/目录下,会多一个gzip/wasm.zip文件,即为待上传到CDN的。
如果是想修改上述填写的地址,可以找到webgl_vivo/buildUnity/env.conf文件,修改wasmUrl字段
{
"wasmUrl":"https://vassets.vvstc.com/vassets/og2pg/o/webdemotest.zip"
}
注意事项
该地址配置上线时请注意版本号的区分,不能多个导出版本混用同一个wasm线上文件