Appearance
WebGL平台构建发布
一句话理解
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 / ASTCPublish to Play:可发布到 Unity Play,Unity 文档说明 Web build 需小于 1GB
在 Edit > Project Settings > Player > Web 里重点看:
Default Canvas Width / Height:网页画布默认尺寸Web Template:Default、Minimal、PWA或自定义模板Compression Format:Gzip、Brotli、DisabledData 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:xxxxWebGL 平台限制
WebGL 跑在浏览器安全沙盒里,所以它不像 PC 端那么自由:
- 不能随便访问本机文件系统
- 不支持直接 IP socket
.NET System.Net很多能力不可用- 标准 C# 多线程受限
- 音频、输入、全屏、剪贴板等常受浏览器策略影响
- 移动浏览器性能和内存压力更大
如果要启用 Web 多线程,还要额外配置安全响应头,例如 Cross-Origin-Opener-Policy、Cross-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