跳转到内容

Unity Web 优化

Unity WebGL 完全有能力做出秒进体感的游戏,但开箱即用的状态下做不到。大部分功夫花在裁剪运行时延迟资源加载上,好让玩家最先看到的东西能尽快出现。

目标:初始下载约 8 MB(≈ 7 MB 运行时 + ≈ 1 MB”首场景”资源)。其它一切都在加载画面出现之后通过 Addressables 拉取。

Unity 6.1 带来了 FRVR 封装包所假设的 Web 优化项。先升级 —— 工作量取决于你目前在哪个版本,但从最近的版本升上来通常几乎是免费的。

安装 Unity Web Stripping Tool Package,激进地裁剪。运行时大小参考:

构建大致运行时
未裁剪~12 MB
”Empty”(默认裁剪)~5 MB
”Minimal”(工具裁剪)~7 MB

minimal 配置通常是合适的目标 —— 它保留了真实游戏需要用到的足够 Unity 内容,而不必为 5 MB 用不上的子系统买单。

三种范式,从最差到最好:

所有内容塞进单次下载。整个游戏加载完之前玩家什么都看不到。流失会非常严重 —— 手机 Web 上尤其如此。

  1. 初始场景做得很小:只有一根进度条,可选地加上你的游戏标题。
  2. 这个场景一上屏,就开始用 Addressables 拉取游戏其余部分。
  3. 当所需 Addressables 完成后切换到真正的场景。

同样的范式,但加载器根据玩家选择拉哪些 Addressables。新用户拿到教程包;回头玩家跳过教程拿”主页”包。把最热的玩家群体的开玩时间再压低。

  • Compression format: Brotli,fallback 启用。
  • Template: 默认 Unity WebGL 模板(FRVR 流水线会重写它)。
  • Run in background: 关闭。
  • Unity 版本: 6.1+。

严格说不算性能建议,但放在这里 —— 因为它是 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