Unity3D用LeanCloud实现排行榜3 - SSB4455/ownArticleSome GitHub Wiki

好的这一篇我们来使用LeanCloudACL来实现一个安全的只有自己才能修改自己的成绩的排行榜

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

⚠️ **GitHub.com Fallback** ⚠️