Unity 开发微信小游戏初探

前言

最近因项目需要开始研究Unity开发微信小游戏相关的知识。期间遇到各种坑,网上查阅的资料基本类似,无法解决自己遇到的问题。特用本文记录下过程,方便其他人遇到同样的问题时能够参考。

开发环境

  1. Unity 版本 根据微信小游戏插件文档推荐使用2021.2.5版 。实测2021.3.x 以上版本均可使用。

  2. 安装 NodeJs 最新长期支持版。

  3. 小游戏帐号注册请参考微信官方文档 微信开放文档

  4. 微信开发者工具(小游戏版)

    注意事项

  5. 小程序类目设置必须按下图进行设置。
    在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4K6sp7Mx-1677573033113)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228152043356.png)]

  1. 否则会出现小程序菜单的->成长中没有能力地图功能。后续的步骤将出现一系列问题。比如用unity微信小游戏插件转换完的程序无法正常导入微信开发者工具。并出现无法编译提示"未找到入口 app.json 文件,或者文件读取失败,…"的错误。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCeFSpnL-1677573033114)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228152533335.png)]

  1. 在小程序->成长->能力地图->生产提效包中开启【高性能模式】和【快适配】功能。如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nxY7TnHi-1677573033114)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228152119774.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D4NQaHh2-1677573033114)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228152214123.png)]

开发步骤

开发Unity游戏

建议先用最简单的示例,来测试转换流程和开发环境是否正确。

安装微信小游戏unity 转换插件

下载插件minigame-unity-webgl-transform: Unity WebGL 微信小游戏适配方案

在Unity Editor打开的项目中 Project中右键import package->custom package 选择下载的插件。

安装成功后在UnityEditor菜单会看到【微信小游戏】。
在这里插入图片描述

编译Unity项目

此步骤不赘述

设置Unity WebGL

Unity Editor中File->Build settings。如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3s9EfL7-1677573033115)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228155952307.png)]

转换微信小游戏

设置如下图。必填项:

  1. 游戏appid是微信小程序注册时产生的appid
  2. 小游戏项目名
  3. 导出路径。转换后的程序存储路径
  4. 首包资源加载方式。选择小游戏包内(原因目前还没有自己的CDN服务器)

点击导出WebGL并转换为小游戏。进行程序转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKo6M7s2-1677573033115)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228142519984.png)]

转换过程可能出现的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNF7whmd-1677573033116)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228142715759.png)]

  1. 报错node.exe不存在,首先检查是否安装了Nodejs;如果已安装按下图步骤进行设置。Custom Node Path设置为自己Nodejs的安装路径。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1NHj4cZ-1677573033116)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228143029833.png)]

  1. 报错 Unity 2021版本使用Embeded Symbols,代码包中含函数名体积较大,发布前请用代码分包工具进行优化。根据错误提示,打开相应源代码,发现只是Unity2021以上版本这个错误一定会出现,不影响后续工作,如果如本人一般的强迫症,可以手工注释掉这行代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SAfz0KEq-1677573033117)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228143328555.png)]

微信开发者工具导入项目

在小游戏菜单->目录->选中Unity转换小游戏设置的目录下的Minigame目录。

因为没有云服务器,后端服务选择不使用云服务。确定后就可以正常编译,调试运行自己的小游戏了。

在小游戏菜单->目录->选中Unity转换小游戏设置的目录下的Minigame目录。

因为没有云服务器,后端服务选择不使用云服务。确定后就可以正常编译,调试运行自己的小游戏了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JqyvfRzJ-1677573033117)(C:UserslontranAppDataRoamingTyporatypora-user-imagesimage-20230228143522190.png)]