无法从排行榜加载分数

时间:2019-02-04 10:14:23

标签: c# unity3d google-play-games leaderboard

我正在使用Google Play游戏服务插件在我的统一游戏中建立排行榜系统。

我想加载分数,以便将其集成到我的自定义LeaderbordUI中, 我遵循了文档,并使用了ILeaderboard.LoadScores,但是它不起作用。

当我检查logcat时,我得到了:

02-04 11:03:56.580:W / Unity(18969):!!! [Play Games Plugin DLL] 02/04/19 11:03:56 +01:00警告:提取时返回错误:-108

我尝试使用方法“ Social.LoadScores”和“ PlayGamesPlatform.Instance.LoadScores”加载loadScore,但是我得到了同样的警告。

PS:当我使用Social.ShowLeaderboardUI()时,它将向我显示排行榜。 但是当我使用PlayGamesPlatform.Instance.ShowLeaderboardUI(LB_Stars.id)来显示特定的排行榜时,它给我“嗯,在玩游戏时出了点问题”

public void LoadLeaderboard()
{
    LB_Stars.LoadScores(ok =>
    {
        if (ok)
        {
            LoadUsersAndDisplay(LB_Stars);

        }
        else
        {
            Debug.Log("Error retrieving STARS leaderboard");
        }
    });

}

internal void LoadUsersAndDisplay(ILeaderboard lbStar)
{

    Debug.Log("gonna load user and display them");

    List<string> userIds = new List<string>();

    foreach (IScore score in lbStar.scores)
    {
        userIds.Add(score.userID);
    }

    Social.LoadUsers(userIds.ToArray(), (users) =>
    {
        string status = "Leaderboard loading: " + lbStar.title + " count = " +
            lbStar.scores.Length;
        foreach (IScore score in lbStar.scores)
        {
            IUserProfile user = FindUser(users, score.userID);

            if (user != null)
            {

                UserLeaderboardClone = Instantiate(UserLeaderboardPrefab);
                UserLeaderboardClone.name = score.rank.ToString();

                LeaderboardUserScript lbUser = UserLeaderboardClone.GetComponent<LeaderboardUserScript>();
                lbUser.transform.SetParent(LBScrollview.content.transform, false);

                FillUserInfo(lbUser, user, score);

            }
        }
    });
}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

花了几个小时之后,我的问题才发现我的游戏正在使用另一个应用程序的排行榜ID。 因此,由于出现此“未经授权的错误”而失败,但是未给出确切原因。

之所以发生这种情况,是因为统一的游戏配置正在缓存旧值。当您打开它时-它具有正确的ID,但是在生成的GPGSids.cs文件中-存在错误的ID。

解决方案就是通过重新保存配置来重新生成该信息。