如何将 Google 服务排行榜用户 ID 映射到当前用户

问题描述 投票:0回答:1

我在 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
                    }
                });
c# unity-game-engine google-play-services
1个回答
0
投票

作为解决方法,我想出了这个拐杖来检查这是否真的是本地用户。

 using var currentPlayerInfo = scoreHolder.Call<AndroidJavaObject>("getCurrentPlayerInfo");
 var friendsListVisibilityStatusRaw = currentPlayerInfo.Call<int>("getFriendsListVisibilityStatus");
 var friendsListVisibilityStatus = AndroidJavaConverter.ToFriendsListVisibilityStatus(friendsListVisibilityStatusRaw);

 isLocalUser = friendsListVisibilityStatus > 0;
© www.soinside.com 2019 - 2024. All rights reserved.