• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unity微信小游戏使用微信云开发排行榜

武飞扬头像
Mr.慕容
帮助3

这里的排行榜指的是,地区排行榜,按照玩家选择的省份,上传分数,进行省份之间的排行。好友排行榜的话,网上资料还是不少的,如果大家需要我可以再更新一篇讲好友排行榜做法

一、获得排行榜数据

首先是微信云函数:

  1.  
    // 云函数入口文件
  2.  
    const cloud = require('wx-server-sdk');
  3.  
    cloud.init({env:cloud.DYNAMIC_CURRENT_ENV});
  4.  
     
  5.  
    //获取数据库的引用
  6.  
    const db = cloud.database();
  7.  
    const rankdata = db.collection('Ranking');
  8.  
     
  9.  
    // 云函数入口函数
  10.  
    //获取排行榜所有数据
  11.  
    exports.main = async (event,context) => {
  12.  
    //const wxContext = cloud.getWXContext();
  13.  
     
  14.  
    let data = await rankdata.get();
  15.  
     
  16.  
    if(data.data.length==0){
  17.  
    return{
  18.  
    code:0
  19.  
    };
  20.  
    }
  21.  
    else{
  22.  
    return {
  23.  
    data:data.data
  24.  
    };
  25.  
    }
  26.  
    };
学新通

云函数部署完毕后,unity端即可直接调用,这里只贴上获得数据的函数,拿到数据后再显示出来就行了:

  1.  
    public void CallGetAreaRank(Action<List<RankData>> callback)
  2.  
    {
  3.  
    List<RankData> rankDatas = null;
  4.  
    //Debug.Log("CallGetRank");
  5.  
    var p = new C()
  6.  
    {
  7.  
    content = "haha"
  8.  
    };
  9.  
    //Debug.Log(JsonUtility.ToJson(p));
  10.  
    WX.cloud.CallFunction(new CallFunctionParam()
  11.  
    {
  12.  
    name = "getRank",
  13.  
    data = JsonUtility.ToJson(p),
  14.  
    success = (res) =>
  15.  
    {
  16.  
    //Debug.Log("success");
  17.  
    //Debug.Log(res.result);
  18.  
     
  19.  
    var data = JsonMapper.ToObject(res.result);
  20.  
    if (data.ContainsKey("data"))
  21.  
    {
  22.  
    var gamedata = data["data"];
  23.  
    rankDatas = JsonMapper.ToObject<List<RankData>>(new JsonReader(gamedata.ToJson()));
  24.  
    }
  25.  
    else
  26.  
    {
  27.  
     
  28.  
    }
  29.  
    callback?.Invoke(rankDatas);
  30.  
    },
  31.  
    fail = (res) =>
  32.  
    {
  33.  
    //Debug.Log("fail");
  34.  
    //Debug.Log(res.errMsg);
  35.  
    },
  36.  
    complete = (res) =>
  37.  
    {
  38.  
    //Debug.Log("complete");
  39.  
    //Debug.Log(res.result);
  40.  
    }
  41.  
    });
  42.  
    }
学新通

二、设置排行榜数据

微信云函数:

  1.  
    exports.main = async (event,context) => {
  2.  
    const _ = db.command
  3.  
    //查询用户是否已经保存过数据
  4.  
    let _isHas = await rankData.where({
  5.  
    area:event.content,
  6.  
    }).get();
  7.  
     
  8.  
    //如果没有,首次保存
  9.  
    if(_isHas.data.length==0){
  10.  
    let _isAdd = null;
  11.  
    let addData = {
  12.  
    area:event.content,
  13.  
    score:1,//event.gamedata unity调用直接读event
  14.  
    }
  15.  
    _isadd = await rankData.add({
  16.  
    data:addData
  17.  
    })
  18.  
    return{
  19.  
    code:0,
  20.  
    res:_isadd,
  21.  
    data:addData,
  22.  
    };
  23.  
    }
  24.  
    //如果有数据,则更新
  25.  
    else{
  26.  
    return await rankData.where({
  27.  
    area:event.content
  28.  
    }).update({
  29.  
    data:{
  30.  
    area:event.content,
  31.  
    score:_.inc(1),//数据自增1
  32.  
    }
  33.  
    })
  34.  
    }
  35.  
    };
学新通

unity端调用:

  1.  
    public void CallSetAreaRank()
  2.  
    {
  3.  
    //Debug.Log("CallSetRank");
  4.  
    string userProvince = "省份";
  5.  
    var p = new C()
  6.  
    {
  7.  
    content = userProvince
  8.  
    };
  9.  
     
  10.  
    //Debug.Log(JsonUtility.ToJson(p));
  11.  
    WX.cloud.CallFunction(new CallFunctionParam()
  12.  
    {
  13.  
    name = "setRankData",
  14.  
    data = JsonUtility.ToJson(p),
  15.  
    success = (res) =>
  16.  
    {
  17.  
    Debug.Log("success");
  18.  
    Debug.Log(res.result);
  19.  
     
  20.  
    },
  21.  
    fail = (res) =>
  22.  
    {
  23.  
    Debug.Log("fail");
  24.  
    Debug.Log(res.errMsg);
  25.  
    },
  26.  
    complete = (res) =>
  27.  
    {
  28.  
    Debug.Log("complete");
  29.  
    Debug.Log(res.result);
  30.  
    }
  31.  
    });
  32.  
    }
学新通

好了,这次的分享就到这里了,主要难点就是云函数对数据库的操作,unity端只需要调用云函数获得数据进行显示就行了。

如果对你有帮助,欢迎点赞关注评论哦,有写的不对的地方欢迎指正,欢迎讨论

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhegbgjh
系列文章
更多 icon
同类精品
更多 icon
继续加载