有实践的自然就有踩坑的,一起来看看社区水友经验总结八条关于微信小游戏开发过程的注意事项吧。
浏览器模式下,插件代码的变量会自动注册成全局变量,其他模块直接用就是。编译到微信小游戏,会包装一层,就没法用全局变量。所以叫不以插件方式导入,在最后用 module.exports 导出变量,要用的时候 require 一下再用。以前 proto 文件转成 js 文件以插件方式导入会出问题,这样处理就好了。
用第三方的 base 库,在项目根目录执行:
要用的地方引用该模块:
微信小游戏 HTTP 接口不一样,也不支持 FormData,所以 HTTP 请求接口整理两个模块,根据 cc.sys.platform === cc.sys.WECHAT_GAME 初始化接口,同时兼容微信小游戏和浏览器。
如果第三方库用到,很可能有问题,protobufjs 的 inquire 函数用到了,但编解码还可以用。
原来的项目,整理到微信工具里运行,"click" 事件的 node 点击体验经常有问题,一会儿单击就可以,一会儿需要双击才能生效,不知道是微信工具的问题还是引擎的锅。类似这样的 "click" 监听事件可能有问题:
Windows 的 Cocos Creator 编译会有问题,Mac的 Cocos Creator 编译后正常,web 模式编译都没问题,这锅估计得算引擎的。
在机器内存紧张的情况下,非常容易遇到,连场景也切不了,也没任何报错。在内存充足的情况下,基本都是正常的,可能是微信工具的锅。
虽然腾讯官方文档给的 WebSocket API 和浏览器的不太一致:https://mp.weixin.qq.com/debug/wxagame/dev/document/network/websocket/wx.connectSocket.html?t=
但实际上可以浏览器一样的 API 操作,也就是类似 var ws = new WebSocket(url) 这样去连接,但最多只能建立两个 WebSocket 连接。另外,微信小游戏的发送数据(ws.send)只支持 string 和 arraybuffer,而浏览器可以直接发送 UintArray。