Unity3D用LeanCloud实现排行榜1 - SSB4455/ownArticleSome GitHub Wiki
首先 从LeanCloud官网下载SDK
https://releases.leanapp.cn/#/leancloud/unity-sdk/releases
我下载的时候是v20181012.1
打开压缩包里面有两个文件夹
分别对应Unity3D的 PlayerSettings.scriptingRuntimeVersion NET的3.5版本和4.6版本 使用对应的版本就好 功能是一样的
在任意一个 GameObject 上添加AVInitializeBehaviour 组件
然后根据下图填写 Application ID 以及Application Key
官方文档说
“目前 Unity 的初始化只允许用 GameObject 绑定 AVInitializeBehaviour 脚本的方法,不可以使用其他方式显式调用 AVClient.Initialize 的方法。”
在场景里创建一个IntputField一个Button
新建一个提交成绩的方法 绑在Button上
public void SubmitScore()
{
AVObject gameScore = new AVObject("GameScore");
gameScore["playerName"] = "player1";
gameScore["score"] = int.Parse(intputField.text);
intputField.text = int.Parse(intputField.text) + 1 + "";
Task saveTask = gameScore.SaveAsync();
}
LeanCloud会自动创建对应的数据表"GameScore" 表里面会按照我添加的属性来添加 比如现在就有"playerName"和"score" LeanCloud官方文档里面写了 除了用户添加的字段之外
createdAt 和 updatedAt 分别代表每个对象在 LeanCloud 中创建和最后修改的时间,它们会被自动添加并赋值。
好 然后就在场景里面点一下试一下
然后你在后台得到了这样的数据
看起来还不错
然后 我们在游戏里面怎么获取这些成绩
我们在场景里面再添加一个Text 用来显示成绩记录
然后把Start方法里面加入查询成绩的显示
// Use this for initialization
void Start()
{
new AVQuery<AVObject>("GameScore").FindAsync().ContinueWith(t =>
{
string scoresStr = "";
foreach (AVObject avobj in t.Result)
{
Debug.Log(avobj["playerName"] + " " + avobj["score"] + " " + avobj.CreatedAt);
scoresStr += avobj.CreatedAt.Value.ToString("yyyy-MM-dd HH:mm:ss") + " |\t" + avobj["score"] + "\t|\t" + avobj["playerName"] + "\n";
}
outputText.text = scoresStr;
});
}
OK 到目前为止 初步的提交成绩获取成绩就完成了
LeanCloud帮我们把后端的很多方法都已经完成了 用起来还是非常方便快捷的
下一篇我们来让用户更新自己的最好成绩而不是每个成绩都有一条记录
2018-11-21
小彩蛋 把提交成绩的方法也改了一下 这样每次提交完成绩就能直接更新排行榜显示(虽然这里也都是要被改掉的)
public void SubmitScore()
{
AVObject gameScore = new AVObject("GameScore");
gameScore["playerName"] = "player1";
gameScore["score"] = int.Parse(intputField.text);
intputField.text = int.Parse(intputField.text) + 1 + "";
Task saveTask = gameScore.SaveAsync().ContinueWith(t =>
{
new AVQuery<AVObject>("GameScore").FindAsync().ContinueWith(t2 =>
{
string scoresStr = "";
foreach(AVObject avobj in t2.Result )
{
Debug.Log(avobj["playerName"] + " " + avobj["score"] + " " + avobj.CreatedAt);
scoresStr += avobj.CreatedAt.Value.ToString("yyyy-MM-dd HH:mm:ss") + " |\t" + avobj["score"] + "\t|\t" + avobj["playerName"] + "\n";
}
outputText.text = scoresStr;
});
});
}
参考 https://leancloud.cn/docs/unity_guide.html#hash20935048
Written with StackEdit.