概述
欢迎使用 Unity WebGL 小游戏适配(转换)方案,本方案基于 WebAssembly 技术,旨在大幅降低 Unity 项目迁移至小游戏平台的成本。您无需更换引擎或重写核心逻辑,即可完成适配。由于 TCSAS 小游戏环境同样基于 WebAssembly 与 wx API 构建,该方案可直接复用微信官方适配路径,核心技术栈完全兼容。
方案特点
保持原引擎工具链与技术栈。
无需重写游戏核心逻辑,支持大部分第三方插件。
由转换工具与小游戏运行环境保证适配兼容,保持较高还原度。
小游戏平台能力以 C# SDK 方式提供给开发者,快速对接平台开放能力。
技术原理
Unity 的 BuildTarget 支持 WebGL 平台,WebGL 导出包是基于 WebAssembly 技术运行在浏览器环境。为了能让导出包运行在小游戏环境,我们提供了以下支持:
1. 开发阶段:提供平台能力的 C# SDK 帮助开发者快速对接平台能力。
2. 导出阶段:提供转换打包工具,进行 Unity WebGL 胶水层适配,直接转换成小游戏包。
3. 运行阶段:提供 WebAssembly 基础能力,由底层接口支持。
适用场景
本方案适合多种品类的游戏项目:
休闲:消除,答题,模拟经营,塔防,益智等。
动作:跑酷,飞行射击,轻度 IO。
棋牌:棋类,牌类。
角色:卡牌,回合,策略,mmo。
接入流程
接入流程主要包含以下三个环节:
注意:
图中每个环节的人力时间为预计,具体时间因具体项目不同。
重要的能力支持情况如下,请根据实际项目情况进行评估:
|
Unity 基础模块 | 支持 | 支持动画、物理、AI、UI 等基础模块 |
渲染管线与接口 | 支持 | 支持标准渲染管线、URP,但依赖 WebGL 2.0 的特性处于 Beta 测试 |
资源加载 | 支持 | Addressable、AssetBundle 网络异步加载 |
Lua 脚本 | 支持 | 支持标准 Lua 与常见 Binding(如 xlua, tolua 等),不支持 Luajit。需根据实际游戏在真机验证性能 |
PuerTS | 支持 | iOS 系统需 14.5 以上,支持 JIT |
Unity 音频 | 支持 | Unity Audio 基本能力支持,支持 FMOD 插件,暂未支持 Wwise。长音频建议适配小游戏音频 InnerAudio 以优化内存 |
第三方插件 | 部分支持 | 支持大部分插件,C# 插件与非平台相关的 C 原生插件 |
网络系统 | 需调整 | 不支持 System.Net 接口,HTTP 使用 UnityWebRequest,WebSocket 通信替代(如开源的 UnityWebSocket 插件),UDP/TCP 使用 WX SDK 适配 |
多线程 | 不支持 | 删除多线程用法,使用异步等其他替代方式 |
文件系统 | 需调整 | 不支持 System.File,但可使用小游戏 WX SDK 实现文件存储,大小限制为 200MB(满足条件可申请提升至 1G),适配插件已实现资源的自动缓存与更新 |
我们提供了 Unity 转换插件帮助开发者将项目自动导出为小游戏包,随后即可使用 TCSAS 开发者工具或 Android/iOS 真机进行预览。 以下为转换流程:
微信小游戏平台提供众多开放能力,但目前是以 JavaScript API 形式提供。为降低开发者对接平台能力的门槛,我们提供了平台能力 C# SDK,开发者可通过熟悉的 C# 接口完成平台能力调用,相关文档请参阅 WX_SDK。