我在 Unity 中有游戏,并且正在使用 Google Play 服务插件。我创建了排行榜,并希望以编程方式加载内容以使其看起来更漂亮。
我使用了 PlayGamesPlatform.Instance.LoadScores() 方法,我的排行榜正在加载,PlayerScore 和 Scores 对象都已填充,但我在 Scores 表中查找当前用户得分时遇到问题。 PlayerScore 对象中的 UserId 与 Scores 表中的 UserId 不同。 只有一个,我的分数,所以我确信它是同一个用户。 如何在分数表中找到我的分数?
PlayGamesPlatform.Instance.LoadScores(
type,
start,
count,
LeaderboardCollection.Public,
timespan,
data =>
{
Debug.Log("GOOGLE USERID " + PlayGamesPlatform.Instance.GetUserId()); // GOOGLE USERID 116254439162396242728
Debug.Log("GOOGLELOCAL USERID " + PlayGamesPlatform.Instance.localUser.id); // GOOGLELOCAL USERID 116254439162396242728
Debug.Log("PLAYERSCORE USERID " + data.PlayerScore.userID); // PLAYERSCORE USERID 116254439162396242728
foreach (var score in data.Scores)
{
Debug.Log("SCORE USERID " + score.userID); // SCORE USERID a_2248181595467244665
}
});
作为解决方法,我想出了这个拐杖来检查这是否真的是本地用户。
using var currentPlayerInfo = scoreHolder.Call<AndroidJavaObject>("getCurrentPlayerInfo");
var friendsListVisibilityStatusRaw = currentPlayerInfo.Call<int>("getFriendsListVisibilityStatus");
var friendsListVisibilityStatus = AndroidJavaConverter.ToFriendsListVisibilityStatus(friendsListVisibilityStatusRaw);
isLocalUser = friendsListVisibilityStatus > 0;