在之前的文章里戒戒也是讲了如何加载关卡列表,今天我们来说一说加载玩家排行榜,一般来说想要有排行榜功能的话必须要有服务器,好在微信给小程序、小游戏等功能推出了云开发服务,所谓云开发就是微信帮我们把服务器建好了,当然这个是需要收费的。
云开发开通过后就会有环境变量ID,然后我们在project.config.json 文件中定义好相关目录: "cloudfunctionRoot": "cloudfunction/",
由于cocos creator 每次构建会把build下面的所有文件都清空,所以云开发的文件夹最好放在外部,我们指定miniprogramRoot的路径:"miniprogramRoot": "wechatgame/",这样每次构建就不会把我们的云函数相关内容删除了。
下面就到了写云函数的环节,我们先来看一个比较简单的云函数:
const gamedata = db.collection('XXXX');//先获取集合
let _isHas = await gamedata.where({
openid: wxContext.OPENID // 需要过滤查询的内容(微信上下文OPENID数据)
}).get();
if (_isHas.data.length == 0) {//这里每个玩家的openid是唯一的,也就是可以用这个来做主键
let _isAdd = null; // 声明一个变量,用于存储add()的结果
let addData = { // 声明要添加的数据(2条)
// 存储格式
openid: wxContext.OPENID, // 键:openid, 值:微信上下文中的OPENID数据
score: event.score,
nickName: event.nickName,
avatarUrl: event.avatarUrl,
gameDate: event.gameDate
}
_isadd = await gamedata.add({
data: addData
})
return {
code: 9,
res: _isadd,
data: addData
};
}
先查询集合内是否有这个玩家的记录,如果没有就向集合中添加记录,如果有的话就更新内容!
在脚本中,我们先获取一下缓存中的分数,如果比之前的高的话则更新,然后判断是否是微信平台。
如果是微信平台的话则调用云函数,传入相应参数,可以再complete里做一些成功后的返回操作,比如谈个提示框之类的。
在需要获取排行榜的地方也是同理,通过调用云函数完成。这里有一点需要注意的是,这里需要用到异步/同步操作,等数据返回之后我们再赋值,这样就不会报错。
好了今天就先说这么多,对了记得来体验一下这款小游戏哦,打不过的话一定要升级装备!