Unity 导出的 WebGL 小游戏存在资源包体积较大的问题,主包 + 分包通常在 30MB 左右。由于线上平均网速在 1–2Mb/s 范围内,用户首次加载需要 15–30 秒甚至更久,影响用户体验和转化率。
因此,平台对包体大小提出限制,并建议按需加载以优化启动速度和加载性能。
类型 | 包体类型 | 限制要求 | 说明 |
---|---|---|---|
平台限制 | 主包 | < 4MB | 所有资源压缩后主包大小必须小于 4MB |
平台限制 | 分包 | 主包 < 4MB + 所有分包 < 30MB | 支持分包上传,整包作为兼容包上传但不计入大小限制 |
优化建议 | 关键资源 | data.wasm ≤ 15MB;code.wasm ≤ 30MB | 通过自身裁剪资源等手段降低导出的包体大小,减小文件体积 |
游戏启动速度主要受以下两个大文件制约,首次启动游戏引擎会远程网络加载这两个文件,所以这两个文件越小,启动速度越快。
xxx.data.unityweb
(资源文件)优化建议:
xxx.code.unityweb
(代码文件)包含游戏的核心逻辑代码,加载后通过 WebAssembly 运行。
优化建议:
控制初始化与首帧逻辑复杂度,减少 Awake
、Start
和首帧 Update
的负载。
Unity 2021+ 可设置 PlayerSettings 的 IL2CPP 为 更小Size
,减少函数数量。
启用引擎裁剪:
Project Settings > Player > Other Settings > Optimization > Strip Engine Code
并设置 Stripping Level 为最高。
移除无用插件和平台代码,提升压缩率。
适用于没有自有 CDN 的团队,资源以主包 + 子包形式分发。
打包后结构如下:
文件 | 说明 |
---|---|
main.rpk | 主包(控制在 4MB 内) |
unitySubPkg.rpk | 分包(需控制在 30MB 内) |
打包工具自动将 unitySubPkg
文件夹中的内容生成分包,并在运行时按需加载。
⚠ 若
unitySubPkg
> 30MB,需优化data.unityweb
和code.unityweb
。
若使用了分包加载,导出的 xxx.data.unityweb(即 webgl.data)部分>20MB 时,建议存放到自有 CDN 服务器上;
填写 webgl.zip URL 以后,在 src 同级目录下会多出 gzip 目录,该目录下资源上传到自有 CDN 上,URL 对应此 CDN 的资源地址,如下图所示:
**注:未获得 CDN 资源地址之前可以写一个示例地址方便打包出 gzip 目录,示例地址如:**
http://10.15.xx.xx:8080/wasm.zip
,上传后重新配置点击仅构建即可。
适用于拥有自有 CDN 的团队,可将 WASM 文件独立上传至 CDN,以减小主包体积。
配置方式:
导出快游戏后,会生成 gzip/wasm.zip
文件。
上传 wasm.zip
至 CDN。
配置地址到 webgl_qg/buildUnity/env.conf
文件中的 wasmUrl
字段:
{
"wasmUrl": "https://yourcdn.com/path/wasm.zip"
}
⚠ 建议前期调试使用整包加载,使用本地 wasm 文件进行调试。正式上线时需为每次导出配置唯一版本地址,避免多个版本混用同一个资源文件。
http://10.15.xx.xx:8080/wasm.zip
)生成 gzip 文件夹结构。