# Unity 小游戏 WASM 分包工具使用说明(新版)
# 一、前置说明:
在Unity侧使用美团 Unity 游戏转换插件导出时,需要开启 profiling func,这样打包时就会导出 symbol 文件。
无需担心开启 profiling func 导致的包体增大,分包工具会优化函数名
小游戏转换工具面板的基本信息请务必填写游戏 appId

美团客户端支持:
安卓端 12.25.400 版本及以上支持,12.25.400 以下版本执行默认加载逻辑
iOS 端 12.25.400 版本及以上支持,12.25.400 以下版本执行默认加载逻辑
请使用最新版本的美团小游戏 Unity 转换工具进行游戏转换
美团客户端 以及 美团小游戏 Unity 转换工具 请联系相关运营同学获取
使用 WASM 分包功能前请联系美团侧运营同学配置游戏白名单
# 二、安装
请确保本地已经安装 Node.js (Node.js 版本不低于 v14.13.0),然后运行以下命令安装最新版本(0.0.72及以上) 的美团小游戏 CLI 工具(mgc-cli-external):
$ npm i -g mgc-cli-external@latest
# 三、创建美团小游戏配置文件
在游戏项目父目录或者其他目录(注意不要在当前待打包游戏目录或者子目录)执行以下命令 (如果已经创建过可以忽略)
$ mgc config
配置成功后会在当前目录生成配置文件 mgc.config.js,配置示例如下
module.exports = {
"type": "UnityGame", // 包类型, unity 游戏需要指定 type 类型为 UnityGame
"appId": '4503b3691d974573a747ed85f74f1a29', // 游戏的appId
"appSecret": '752d7e4a3b8b4525', // 游戏的appSecret
"entry": './build/wechatgame' // 需要被打包的小游戏的本地路径
}
# 四、使用分包工具
# 1、初始化
在生成 mgc.config.js 的同级目录执行以下命令
该命令会检查当前项目(appid+code_md5)的分包状态,完成必须的前置准备工作
$ mgc wasm-init

# 2、首次构建分包
在生成 mgc.config.js 的同级目录执行以下命令,(构建时间可能会很久,请耐心等待)
有新增函数则可调用,根据已收集的 WASM 函数调用信息进行首次分包构建命令, 执行成功后会下载分包结果,应用到游戏包相应目录,执行失败可重复执行该命令
$ mgc wasm-split-dev

# 3、函数收集
在生成 mgc.config.js 的同级目录执行以下命令:
$ mgc debug

执行完上述命令后,如果一切正常,会出现二维码,用真机扫码运行游戏
尽量多次扫码测试,覆盖尽可能多的场景
有条件的话,可以尽量覆盖各种机型(主流品牌)再多跑几次收集,先覆盖 Android 机型,再覆盖 iOS机型
当 WASM 函数收集服务所在的终端页显示的收集到的函数个数相对稳定时,就可以再次执行以下命令进行二次分包构建
$ mgc wasm-split-dev
完成构建后,再次执行 mgc debug 命令构建 debug 游戏包进行验证
# 4、开启 WASM 函数收集查询服务
在生成 mgc.config.js 的同级目录执行以下命令,可以开启服务定时查询当前 Wasm 函数的收集情况
$ mgc wasm-log

如果 WASM 函数收集服务所在的终端窗口无函数更新显示或者游戏启动过程中无阻塞性等待耗时就基本完成函数收集了。
# 5、构建 Release 版分包
在生成 mgc.config.js 的同级目录执行以下命令,用于构建 Release 版分包。然后再执行打包发布命令发布 debug 包或者 release 游戏包进行测试,运行正常即可进行接下来的发布流程
$ mgc wasm-split-prod
# 6、函数增量收集
如果游戏通过上述操作构建分包成功。我们在使用转换SDK导出新包时(code md5 发生变更),如果想复用之前的函数收集信息,可以执行 *mgc wasm-update 命令,会更新 symbol 表映射构建新的包。然后发布debug包运行测试即可。 注意还需要重新执行 mgc wasm-log 看首包函数是否有变动。如果要弃用之前收集的函数信息,在出新包后还是执行 mgc wasm-init 命令即可
$ mgc wasm-update
如果导出的新包 WASM 文件没有变更(文件名hash作为确认标识),之前收集的函数信息不会被清理,也不需要变更,执行 mgc wasm-split-dev 或者 mgc wasm-split-prod 命令即可进行分包。
mgc wasm-update 只在出新包(第一次)需要复用原来收集的函数信息且WASM 文件发生变更时使用