Skip to content

WebGL平台构建发布

unity-webgl-build-publishing-deep-dive

一句话理解

Unity WebGL,也就是 Unity 6 里的 Web 平台,不是导出 .exe.apk,而是导出一套网页文件:index.html + Build/ + TemplateData/。浏览器打开网页,通过 JavaScript 加载 .wasm.data 来运行你的游戏。

完整流程

Unity 工程
-> File > Build Profiles
-> 添加 Web 平台
-> 勾选 Scenes
-> 配置 Player Settings / Web
-> Build 或 Build And Run
-> 得到 Web 构建目录
-> 上传整个目录到服务器
-> 浏览器访问 index.html

构建产物

常见结构是:

c
index.html
Build/
  Game.loader.js
  Game.framework.js
  Game.wasm
  Game.data
  Game.symbols.json   可选
TemplateData/

index.html 是网页入口;loader.js 负责加载 Unity;.wasm 是编译后的程序;.data 里有资源和场景。发布时必须上传整个目录,不能只传 index.html

重要设置

File > Build Profiles 里重点看:

  • Development Build:测试用,正式发布关闭
  • Code Optimization:开发选构建快,发布选运行速度或体积优化
  • Texture Compression:桌面常用 DXT,移动 Web 常看 ETC2 / ASTC
  • Publish to Play:可发布到 Unity Play,Unity 文档说明 Web build 需小于 1GB

Edit > Project Settings > Player > Web 里重点看:

  • Default Canvas Width / Height:网页画布默认尺寸
  • Web TemplateDefaultMinimalPWA 或自定义模板
  • Compression FormatGzipBrotliDisabled
  • Data Caching:用浏览器 IndexedDB 缓存资源,二次加载更快
  • Decompression Fallback:不会配服务器头时打开
  • Initial Memory Size / Memory Growth Mode:WebAssembly 内存设置

压缩发布是最大坑

发布 WebGL 时,服务器必须告诉浏览器文件怎么解压:

c
.gz   -> Content-Encoding: gzip
.br   -> Content-Encoding: br
.wasm -> Content-Type: application/wasm
.js   -> Content-Type: application/javascript

推荐理解:

  • 开发测试:Build And Run
  • 不会配服务器:开启 Decompression Fallback
  • 会配服务器:关闭 fallback,配置正确 headers,加载更快
  • 正式发布:可用 Brotli,体积更小,但构建更慢,并且 HTTPS 场景更稳

如果看到 .wasm.br.data.gz 报错,十有八九是服务器响应头没配对。

不要双击 index.html 测试

很多浏览器会限制 file:// 本地文件访问。正确方式是:

c
Build And Run

或者用本地 HTTP 服务器访问:

c
http://localhost:xxxx

WebGL 平台限制

WebGL 跑在浏览器安全沙盒里,所以它不像 PC 端那么自由:

  • 不能随便访问本机文件系统
  • 不支持直接 IP socket
  • .NET System.Net 很多能力不可用
  • 标准 C# 多线程受限
  • 音频、输入、全屏、剪贴板等常受浏览器策略影响
  • 移动浏览器性能和内存压力更大

如果要启用 Web 多线程,还要额外配置安全响应头,例如 Cross-Origin-Opener-PolicyCross-Origin-Embedder-Policy 等,否则浏览器会禁用线程需要的 SharedArrayBuffer

上线检查清单

发布前至少检查:

  • Chrome、Firefox、Edge、Safari 能否打开
  • 首次加载速度是否能接受
  • 第二次加载是否命中缓存
  • Console 有没有红色错误
  • Network 里 .wasm.data.js 是否 200
  • .wasm 是否是 application/wasm
  • 手机浏览器能否正常操作
  • 存档、音频、全屏、输入是否正常

记住这句: Unity 负责生成网页包,服务器负责发对文件,浏览器负责运行游戏。

参考资料: Unity Web Build folderUnity Deploy a Web applicationUnity Web build settingsUnity Web Player settingsUnity Web browser compatibility

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0