Unity3D用LeanCloud实现排行榜3 - SSB4455/ownArticleSome GitHub Wiki
好的这一篇我们来使用LeanCloud的ACL来实现一个安全的只有自己才能修改自己的成绩的排行榜
void Start()
{
LoginOrSignin();
UpdateLeaderBoardText();
}
private void LoginOrSignin()
{
if (AVUser.CurrentUser == null)
{
AVUser user = new AVUser();
user.Username = "player1";
user.Password = "player1";
user.Email = "[email protected]";
user.SignUpAsync();
}
}
首先我们加一个登录或注册的方法LeanCloud是使用Token来实现自动登录的
所以作为测试的方法注册完之后很长一段时间都会自动登录 从而能过获取到当前用户 非常方便
再把提交成绩时的ACL控制加上
public void SubmitScore()
{
AVObject leaderBoardScore = null;
new AVQuery<AVObject>("GameScore").WhereEqualTo("playerName", "player1").OrderByDescending("score").FindAsync().ContinueWith(t =>
{
foreach (AVObject avobj in t.Result)
{
Debug.Log(avobj["playerName"] + " " + avobj["score"] + " " + avobj.CreatedAt);
leaderBoardScore = avobj;
break;
}
if (leaderBoardScore == null)
{
leaderBoardScore = new AVObject("GameScore");
leaderBoardScore["playerName"] = "player1";
leaderBoardScore["score"] = int.Parse(intputField.text);
if (AVUser.CurrentUser != null)
{
leaderBoardScore.ACL = new AVACL();
leaderBoardScore.ACL.PublicReadAccess = true;
leaderBoardScore.ACL.SetWriteAccess(AVUser.CurrentUser, true);
}
}
if ((int)(leaderBoardScore["score"]) < int.Parse(intputField.text))
{
leaderBoardScore["score"] = int.Parse(intputField.text);
leaderBoardScore.SaveAsync().ContinueWith(t2 =>
{
UpdateLeaderBoardText();
});
}
});
}
这样就可以做到任何用户都可以读 但只有用户自己可以修改
到此为止 使用LeanCloud实现一个简单的游戏排行榜就完成了
拖拖拉拉写了三篇 希望大家能看懂
最后附上demo项目
2018-12-04 bye