# 资源加载与部署
与原生 App 游戏"启动时全量加载"不同,小游戏需要做到"即点即玩"。本章介绍资源的按需加载、CDN 部署与缓存机制。
# 一、为什么要做资源按需加载
影响游戏呈现速度的因素中,首资源包的下载往往占比很大。因此需要根据场景的主次内容做资源分包,把首屏不需要的资源从首包中分离、运行时按需加载,从而缩短启动等待。
# 二、按需加载方案
| 方案 | 说明 | 适用场景 |
|---|---|---|
| Addressable(AA) | Unity 官方资源管理系统,支持地址化加载与依赖管理 | 推荐新项目使用;资源规模较大、需要精细分包 |
| AssetBundle(AB) | 经典的资源打包与异步加载方式 | 已有 AB 工作流的项目可直接复用 |
- 已使用 AA / AB 的项目:保持现有分包策略,确保首包只含启动必需资源。
- 未分包的轻度项目:可只把首场景所需资源留在首包,其余改为按需加载。
- 中重度项目:建议系统性地规划分包,结合启动性能优化推进。
AA / AB 通过网络异步加载的资源会经由容器自动缓存(见下文「四、资源缓存」),无需开发者手动管理缓存文件。
# 三、资源 CDN 部署
转换后产物分为两部分:minigame(小游戏项目,用于调试 / 发布)与 webgl(需上传 CDN 的资源与代码)。部署要点:
- 上传 CDN:将
webgl目录上传到转换面板中配置的「游戏资源 CDN」地址;运行时Application.streamingAssetsPath即为CDN/StreamingAssets。 - 开启压缩:务必对首资源包等文本类资源开启 Brotli / gzip 压缩传输,显著减小下载体积。
- 配置安全域名:资源 CDN 域名需登记到美团游戏开放平台 (opens new window)的服务器域名白名单,并允许容器来源(
mgcfile://*)跨域访问,详见网络通信适配。
# 四、资源缓存
- 强制缓存:WASM 代码与首资源包会被容器缓存,更新后(文件 hash 变化)自动重新下载。
- 业务资源自动缓存:通过
UnityWebRequest/ Addressable / AssetBundle 加载的资源会按规则自动缓存。 - 缓存控制:可在转换面板配置「不自动缓存文件类型」「Bundle 名中 Hash 长度」等,用于精细化控制缓存与更新粒度。
- 缓存清理:当缓存达到上限时,容器会按规则清理较旧的资源;SDK 也提供查询缓存路径、清理缓存的接口,可按需调用。