微信小游戏开发要点整理
那么当我们在游戏开发的时候该如果的操作呢?让我们一起和九影网络一起看下去吧~
坑点:
1.资源加载
2.文件名不允许使用中文名
3.文件名不允许带空格
4.配置文件不能引用同名或相同的文件
5.声音播放不能太频繁
6.fnt字体不能远程服务器加载
7.不能使用老的RES模块加载
8.exml文件不能远程加载
9.4M外的资源可以放在腾讯云对象存储中,tomcat,阿帕奇,阿里云oss,CDN都无法正常加载
10.关系链的开发数据域只能使用4M内的图片
1.登录
2.获取用户信息不能使用getUserInfo,需要使用createUserInfoButton创建获取用户信息按钮
3.暂时前端没有途径获取unionid,老的获取方式接口已经弃用
4.微信SDK版本在2.0.1以下和iphone7、iphone5机型上新的获取用户信息按钮无法创建,需要用老的API
1.调试
2.有时微信IDE报错缺少文件,可以在Egret Wing重新编译解决
3.开放数据域项目只能使用egret publish --target wxgame 命令编译,不然生成的库文件不是min的,放在微信工程里会超过4M大小
1.音频
2.不能设置音量
3.不能播放过快,不然会有声音播不出
4.不能停止后立刻播放,不然会整个游戏没声音。可以延迟100ms后播放。
5.因为不支持Dom和Bom,所以不能使用<audio>标签播放音频
关系链
1、开放数据域工程发布的文件内缺少文件,需要在官方给的demo里复制
2、主域内获取的window["sharedCanvas"]是以屏幕分辨率为bitmap的大小,需要自己指定宽高为自己的屏幕逻辑分辨率,在开放数据域内指定自身分辨率亲测无效
3、开放数据域里wx.getFriendCloudStorage()获取的数据包含微信排行的数据,微信默认不排序,需要手动排序<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="fd33b6d1-d54c-4d04-9682-f891ac529e03"><ac:parameter ac:name="">_GoBack</ac:parameter></ac:structured-macro>
4、wx.getFriendCloudStorage()不获取具体的排行字段,返回昵称为nickName,获取具体的字段,返回昵称为nickname
5、使用关系链的小游戏必须指定60帧,移除开放数据域的bitmap时记得停止清除bitmap图片数据的tick,避免性能消耗。
6、要移除开放数据域的bitmap操作只能在主域进行操作,开放数据域不能给主域发消息,也不能移除自身
六、其他
1.不能用DOM,BOM
2.不能引用index.html里写的方法
3.如果EUI里引用了另一个EUI,需要把那一个被引用的EUI暴露到全局。如被引用的EUI类名是HeadEUI,需要在类里加上window["HeadEUI"] = HeadEUI
4.右上角的分享需要自己使用 wx.showShareMenu()显示
5.所有在微信api使用的坐标都是基于手机的真实分辨率,需使用要wx.getSystemInfo(Object object)获取screenWidth等参数自行算出对应egret的逻辑分辨率
6.拉起客服微信API文档写的是openCustomerServiceConversation(Object object),实际调用的方法应该是wx.openCustomerServiceConversation(Object object)
7.微信的4M空间限制应该是按上传大小计算,代码包大小如果超过4M,只要在上传是经过微信压缩后小于4M还是可以正常使用
8.EUI的scroller比较复杂时,如包含了大量的微信头像,可以打开cacheAsBitmap降低drawcall,同时把scroller内不在显示区域的对象隐藏显示来降低三角和顶点数
微信API:
小游戏更新
1、小游戏右上角小圆点实际为最小化(切换到后台),重新打开不会重新加载,为热启动。
2、微信小游戏关闭(安卓后台关闭,或者调试时打开/关闭调试模式),重新打开会重新加载游戏,为冷启动。
3、只有冷启动会更新游戏内容,热启动不会更新
4、游戏内可以通过 wx.getUpdateManager()检测更新,有更新后可以使用applyUpdate 进行强制更新,更新会重启小游戏
1.本地文件
2.代码块文件(代码,图片在工程内的文件)大小限制4M,按微信算法计算大小,更新必须提交新版本
3.本地临时文件,网络下载的文件都是本地临时文件,游戏重新打开会清除
4.本地缓存文件(官方已经弃用),可以由本地临时文件使用FileSystemManager.saveFile()转换为本地缓存文件,使用FileSystemManager.getSavedFileList(Object object)获取。重开游戏不会清除。只能通过临时文件转换,不能自定义存储
5.本地用户文件,以用户和小程序区分空间,可以自定义存储。
6.本地文件(应该不区分本地文件类型)每个小程序空间为50M
1.关系链
2.在主域和开放数据域可以使用wx.setUserCloudStorage()设置用户数据,使用wx.removeUserCloudStorage() 删除用户数据
3.在开放数据域可以使用wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage()获取用户数据列表
4.开放数据域是一个独立的js作用域,需要在微信工程里创建目录并在工程里指定openDataContext路径
5.egret里可以开另一个工程写开放数据域显示,再把发布的工程拷贝到主域的工程里
6.主域使用OpenDataContext.postMessage()向开放数据域发送消息,开放数据域 使用wx.onMessage()侦听消息
那么游戏开发哪家好?
游戏开发请找上海九影,九影网络专注“互动 · 游戏 · 营销 · 系统”开发10余年,提供:休闲娱乐游戏、教育教学游戏、互动对战游戏、微信/小程序、品牌营销H5、移动App、政企信息化系统、三维展览展示、元宇宙/ARVR体感体感等服务。
手机:15000568602(微信同号)