Unity 原生导出
适用于已有 Unity 工程。保留原项目的 C#、人物、场景和资源,由 Unity 编译成浏览器版本。开发者使用 Unity 自带 Web Build Support、Default 模板和 Build;不需要安装 Combos Editor 插件、Unity Pipeline、Unity CLI 或自定义模板。 平台能力与原生插件是否支持 Web,按自己的游戏逐项适配。
打开工程,安装官方 Web 模块
操作位置: Unity Hub 和 Unity 编辑器。
操作: 用工程要求的编辑器版本打开,先运行主要场景。Hub → Installs → 同版本编辑器 → Add modules,安装 Web Build Support。停止 Play,进入 File → Build Profiles → Web → Switch Platform。旧版 Unity 使用 Build Settings → WebGL。
成功现象: 项目原版能正常运行;Web 平台显示 Active,脚本和资源导入完成。

图 01|Unity 原生 Web 平台已激活;图中的场景列表属于 BoatAttack 示例。
选择自己的发布场景和导出参数
操作位置: Build Profiles 的 Scene List 与 Player Settings → Web。
操作: 把自己的入口场景放在索引 0,并加入实际需要的其他场景。关闭 Development Build,选择 Unity 自带 Default 网页模板。普通静态托管可使用 Gzip + Decompression Fallback;本例保持单线程。
成功现象: 入口与游戏场景都在发布列表;模板和压缩设置已保存,无需添加 Combos 的构建脚本。

图 02|Player Settings 选择 Unity 自带 Default 模板。
| 设置 | 本例采用的值 | 如何用于自己的游戏 |
|---|---|---|
| WebGL Template | Default | 使用 Unity 自带模板即可;自定义模板另行验证 |
| Compression / Fallback | Gzip + Decompression Fallback | 让 Unity loader 在浏览器解压;也可选择 Disabled 并核对体积 |
| Development / Threads | 关闭 Development Build,单线程 | 多线程依赖托管端跨源隔离,不作为本教程默认接入路线 |
| Graphics / Memory | WebGL 2,初始 256 MB 与内存增长 | 按项目与目标设备验证;256 MB 是示例设置 |
| Scene List | 主菜单 + Island | 必须替换成自己的场景列表 |

图 03|Publishing Settings 使用 Gzip、Decompression Fallback 和单线程。
未开启 fallback 的 .gz / .br 构建需要服务器匹配 Content-Encoding。Fallback 由 Unity 生成的加载器处理 .unityweb,代价是加载器变大且失去原生流式解压优势。不要凭压缩文件的扩展名判断是否可运行;在最终托管环境验证。官方说明:Unity Web 压缩与部署 。
带上游戏实际使用的动态资源
操作位置: 自己的资源管理配置;使用 Addressables 时进入其 Settings。
操作: 如果项目使用本地 Addressables,配置随 Player 构建,并保留输出的 StreamingAssets/aa。项目使用远端资源时,另外核对公开资源地址和浏览器访问。没有使用 Addressables 的游戏无需为了接入安装它。
成功现象: 浏览器能进入实际关卡,船只、人物、UI 等动态资源均可加载;不只验证主菜单。
BoatAttack 的设置为 Window → Asset Management → Addressables → Settings → Build → Build Addressables content on Player Build。自己的工程按其资源管理方案处理。官方说明:Addressables 随 Player 构建 。
原生 Build 到 dist,并检查成功结果
操作位置: Unity 的 Build Profiles → Web。
操作: 保存工程,点击 Build,输出位置选择项目根目录,目录名使用 dist。已有旧成品时备份后输出到空目录。等待完成,并查看 Unity Console。
成功现象: Console 显示构建成功,dist/index.html 与 Build 等目录存在;有编译或资源错误时先修复再构建。
dist/
├── index.html
├── Build/ # loader、framework、wasm、data
├── TemplateData/ # Default 模板样式与图标
└── StreamingAssets/ # 游戏使用动态资源时可能存在保留整个导出目录。C# 编译进 WebAssembly,人物、场景和其他数据随引擎构建;上传时不逐行重写成 JavaScript,也不上传 Unity 的 Assets、Packages、ProjectSettings 或 Library。
在浏览器进入实际游戏,再上传
操作位置: 项目根目录终端与浏览器。
操作: 按发布与更新运行 HTTP 服务,或使用 Unity Build And Run。进入实际关卡,操作角色或载具,检查动态资源、UI、暂停和重玩。完成验证后按发布与更新上传与线上复验。
成功现象: Web 版本主要玩法正常,线上链接也能独立运行。自己的游戏只声明已经验证支持的设备。

图 04|BoatAttack 原生 Default 导出版本已在本地浏览器进入比赛并驾驶。
BoatAttack 完整复现、兼容补丁和实测结果见Unity 案例 · BoatAttack。已经能正常导出 WebGL 的自己的游戏,直接执行本章流程;无需应用 BoatAttack 的补丁或照抄它的场景名。
请保留当前 Unity 游戏的原代码和资源,使用工程要求的编辑器及官方 Web Build Support,通过原生 WebGL Build 导出到 dist。检查入口场景、压缩 fallback 和动态资源。在浏览器验证实际关卡,再按[发布与更新](/docs/integration/publishing)使用 Combos CLI 上传和线上试玩。不要安装 Combos Editor 插件,也不要应用其他案例专用补丁。来源:Combos 开发者接入指南 。原文核对日期:2026-10-08,CLI v1.14.2;案例结果为原文记录的实测结果。