# 兼容性和使用引擎建议

TapTap Unity小游戏基于WebAssembly技术,无需更换Unity引擎与重写核心代码的情况下将原有游戏项目适配到 TapTap 小游戏。部分性能优化项仅在Unity2021后才有,如更全的压缩纹理、压缩音频、更快的编译速度与更小的体积,推荐使用 Unity2021 后的版本。

# 推荐版本

引擎版本 压缩纹理格式 已验证小版本
2021 推荐ASTC 2021.1.* 及以上版本
2022(推荐) 推荐ASTC 2022.3.* 及以上版本
团结引擎-WebGL(推荐) 推荐ASTC 1.0.0 及以上版本

# 运行环境与性能限制

  • Android 基于v8,Android WebGL2.0支持。
  • iOS上对标微信高性能模式,在iOS 15.0后版本支持WebGL 2.0。支持JIT
  • 不支持多线程
  • 性能大概是Native的 1/3
  • 在iOS上内存很受限制,代码分包是必要优化,可参考Wasm分包工具说明
  • 建议先将游戏导出为WebGL在手机浏览器上运行,判断性能和兼容性是否可以接受。

# 可行性评估

# 游戏包体大小改造可能性

用户可以自行选择小包化方案。如果包体已符合要求(准入标准压缩后 小于60M,优秀是10),则可跳过

  • 包体减小,主要在于对资源的分离,可选择的方案包括,且不限于
  • 如果代码过于庞大,导致wasm 过大,也会造成加载和编译时间过长、在iOS上内存占用过大超出限制,那要根据实际情况进行评估是否能够删减。
    • wasm大小可以查看导出产物目录下 converted/game/wasmcode/xxxxxxx.unityweb.wasm.br文件,文件大小建议<10M,超过需要开启wasm分包功能

# 游戏逻辑改造的可能性

  • 支持托管类型的dll插件、C#源码插件,不支持非托管类型(如C++编译的)dll/so。项目依赖的必要插件有Android/iOS平台相关插件或so/framework原生插件,无法转换。
  • 性能有限,如果项目中有较多密集运算,物理模拟,脚本,可能要做降级优化。
  • iOS下内存受限,如果项目中有较大的贴图,模型,可能要做降级优化。

# 功能项评估

游戏重要的能力支持情况如下:

能力 是否支持 解决方案
Unity基础模块 支持 支持动画、物理、AI、UI等基础模块
渲染管线与接口 支持 支持标准渲染管线、URP,但依赖WebGL2.0的特性处于Beta测试
资源加载 支持 Addressable、AssetBundle网络异步加载
Lua脚本 支持 支持标准Lua与常见binding(如xlua, tolua等),不支持Luajit。需根据实际游戏在真机验证性能
PuerTS 支持 支持JIT
Unity音频 支持 Unity Audio基本能力支持,暂未支持fmod插件,暂未支持wwise。长音频建议适配小游戏音频InnerAudio以优化内存
第三方插件 部分支持 支持大部分插件,C#插件与非平台相关的C原生插件
网络系统 需调整 不支持System.Net接口,HTTP使用UnityWebRequest,WebSocket通信替代(如开源的UnityWebSocket插件),UDP/TCP使用TAP SDK适配
多线程 不支持 删除多线程用法,使用异步等其他替代方式
文件系统 需调整 不支持System.File,但可使用小游戏Tap SDK(todo)实现文件存储,适配插件已实现资源的自动缓存与更新