Unity Web 优化
Unity WebGL 完全有能力做出秒进体感的游戏,但开箱即用的状态下做不到。大部分功夫花在裁剪运行时和延迟资源加载上,好让玩家最先看到的东西能尽快出现。
目标:初始下载约 8 MB(≈ 7 MB 运行时 + ≈ 1 MB”首场景”资源)。其它一切都在加载画面出现之后通过 Addressables 拉取。
1. 升到 Unity 6.1+
Section titled “1. 升到 Unity 6.1+”Unity 6.1 带来了 FRVR 封装包所假设的 Web 优化项。先升级 —— 工作量取决于你目前在哪个版本,但从最近的版本升上来通常几乎是免费的。
2. 缩小运行时
Section titled “2. 缩小运行时”安装 Unity Web Stripping Tool Package,激进地裁剪。运行时大小参考:
| 构建 | 大致运行时 |
|---|---|
| 未裁剪 | ~12 MB |
| ”Empty”(默认裁剪) | ~5 MB |
| ”Minimal”(工具裁剪) | ~7 MB |
minimal 配置通常是合适的目标 —— 它保留了真实游戏需要用到的足够 Unity 内容,而不必为 5 MB 用不上的子系统买单。
3. 把游戏结构组织成渐进加载
Section titled “3. 把游戏结构组织成渐进加载”三种范式,从最差到最好:
❌ 一个巨型整包
Section titled “❌ 一个巨型整包”所有内容塞进单次下载。整个游戏加载完之前玩家什么都看不到。流失会非常严重 —— 手机 Web 上尤其如此。
✅ 简单加载场景 → Addressables
Section titled “✅ 简单加载场景 → Addressables”- 初始场景做得很小:只有一根进度条,可选地加上你的游戏标题。
- 这个场景一上屏,就开始用 Addressables 拉取游戏其余部分。
- 当所需 Addressables 完成后切换到真正的场景。
✅✅ 条件式 Addressable 加载
Section titled “✅✅ 条件式 Addressable 加载”同样的范式,但加载器根据玩家选择拉哪些 Addressables。新用户拿到教程包;回头玩家跳过教程拿”主页”包。把最热的玩家群体的开玩时间再压低。
4. 构建设置(快速上手的提醒)
Section titled “4. 构建设置(快速上手的提醒)”- Compression format: Brotli,fallback 启用。
- Template: 默认 Unity WebGL 模板(FRVR 流水线会重写它)。
- Run in background: 关闭。
- Unity 版本: 6.1+。
5. 音频导入
Section titled “5. 音频导入”严格说不算性能建议,但放在这里 —— 因为它是 iOS 播放最先出问题的地方:
- Load Type: Decompress on Load。
- Compression Format: AAC(AAC 不可行时用 PCM)。
应用到每一个 AudioClip。漏掉一个就足以触发 Facebook 的 iOS 静音合规检查。
- Unity 6.1+
- 已应用 Web Stripping Tool Package
- 加载场景范式(渐进 Addressables)已就位
- 初始下载 ≤ ~8 MB
- Brotli 压缩 + fallback
- “Run in background” 已关闭
- 每个 AudioClip:Decompress on Load + AAC/PCM