上一篇文章,给大家分享了云开发存档的功能。今天分享一下怎么做排行榜
这里的排行榜指的是,地区排行榜,按照玩家选择的省份,上传分数,进行省份之间的排行。好友排行榜的话,网上资料还是不少的,如果大家需要我可以再更新一篇讲好友排行榜做法
可能今天讲的比较简单,看不懂的同学可以结合我上一篇文章看看
一、获得排行榜数据
首先是微信云函数:
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init({env:cloud.DYNAMIC_CURRENT_ENV});
//获取数据库的引用
const db = cloud.database();
const rankdata = db.collection('Ranking');
// 云函数入口函数
//获取排行榜所有数据
exports.main = async (event,context) => {
//const wxContext = cloud.getWXContext();
let data = await rankdata.get();
if(data.data.length==0){
return{
code:0
};
}
else{
return {
data:data.data
};
}
};
云函数部署完毕后,unity端即可直接调用,这里只贴上获得数据的函数,拿到数据后再显示出来就行了:
public void CallGetAreaRank(Action<List<RankData>> callback)
{
List<RankData> rankDatas = null;
//Debug.Log("CallGetRank");
var p = new C()
{
content = "haha"
};
//Debug.Log(JsonUtility.ToJson(p));
WX.cloud.CallFunction(new CallFunctionParam()
{
name = "getRank",
data = JsonUtility.ToJson(p),
success = (res) =>
{
//Debug.Log("success");
//Debug.Log(res.result);
var data = JsonMapper.ToObject(res.result);
if (data.ContainsKey("data"))
{
var gamedata = data["data"];
rankDatas = JsonMapper.ToObject<List<RankData>>(new JsonReader(gamedata.ToJson()));
}
else
{
}
callback?.Invoke(rankDatas);
},
fail = (res) =>
{
//Debug.Log("fail");
//Debug.Log(res.errMsg);
},
complete = (res) =>
{
//Debug.Log("complete");
//Debug.Log(res.result);
}
});
}
二、设置排行榜数据
微信云函数:
exports.main = async (event,context) => {
const _ = db.command
//查询用户是否已经保存过数据
let _isHas = await rankData.where({
area:event.content,
}).get();
//如果没有,首次保存
if(_isHas.data.length==0){
let _isAdd = null;
let addData = {
area:event.content,
score:1,//event.gamedata unity调用直接读event
}
_isadd = await rankData.add({
data:addData
})
return{
code:0,
res:_isadd,
data:addData,
};
}
//如果有数据,则更新
else{
return await rankData.where({
area:event.content
}).update({
data:{
area:event.content,
score:_.inc(1),//数据自增1
}
})
}
};
unity端调用:
public void CallSetAreaRank()
{
//Debug.Log("CallSetRank");
string userProvince = "省份";
var p = new C()
{
content = userProvince
};
//Debug.Log(JsonUtility.ToJson(p));
WX.cloud.CallFunction(new CallFunctionParam()
{
name = "setRankData",
data = JsonUtility.ToJson(p),
success = (res) =>
{
Debug.Log("success");
Debug.Log(res.result);
},
fail = (res) =>
{
Debug.Log("fail");
Debug.Log(res.errMsg);
},
complete = (res) =>
{
Debug.Log("complete");
Debug.Log(res.result);
}
});
}
好了,这次的分享就到这里了,主要难点就是云函数对数据库的操作,unity端只需要调用云函数获得数据进行显示就行了。
如果对你有帮助,欢迎点赞关注评论哦,有写的不对的地方欢迎指正,欢迎讨论