无法从排行榜加载分数
can't load scores from leaderboard
我正在使用 google 玩游戏服务插件在我的 unity 游戏中设置排行榜系统。
我想加载分数以便将它们集成到我的自定义 LeaderbordUI 中,
我按照文档进行操作并使用了 ILeaderboard.LoadScores,但它不起作用。
当我查看 logcat 时,我得到了这个:
02-04 11:03:56.580:W/Unity(18969):!!! [Play 游戏插件 DLL] 02/04/19 11:03:56 +01:00 警告:提取返回错误:-108
我尝试使用方法 "Social.LoadScores" 和 "PlayGamesPlatform.Instance.LoadScores" 加载分数,但我收到了相同的警告。
PS:当我使用 Social.ShowLeaderboardUI() 时,它会显示排行榜。
但是当我使用 PlayGamesPlatform.Instance.ShowLeaderboardUI(LB_Stars.id) 来显示特定的排行榜时,它会给我 "hmm,something went wrong in play games"
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);
}
}
});
}
好的,根据 github https://github.com/playgameservices/play-games-plugin-for-unity/issues/2045#issuecomment-350335234
上的评论,我已经弄明白了
在这上面花了几个小时后,我的问题原来是我的游戏使用了另一个应用程序的排行榜 ID。
所以它失败了"unauthorized error",但是没有给出确切的原因。
之所以会这样,是因为unity中的玩游戏配置缓存了旧值。当您打开它时 - 它具有正确的 ID,但是在生成的 GPGSids.cs 文件中 - 存在错误的 ID。
解决方案就是通过重新保存配置来重新生成它。
我正在使用 google 玩游戏服务插件在我的 unity 游戏中设置排行榜系统。
我想加载分数以便将它们集成到我的自定义 LeaderbordUI 中, 我按照文档进行操作并使用了 ILeaderboard.LoadScores,但它不起作用。
当我查看 logcat 时,我得到了这个:
02-04 11:03:56.580:W/Unity(18969):!!! [Play 游戏插件 DLL] 02/04/19 11:03:56 +01:00 警告:提取返回错误:-108
我尝试使用方法 "Social.LoadScores" 和 "PlayGamesPlatform.Instance.LoadScores" 加载分数,但我收到了相同的警告。
PS:当我使用 Social.ShowLeaderboardUI() 时,它会显示排行榜。 但是当我使用 PlayGamesPlatform.Instance.ShowLeaderboardUI(LB_Stars.id) 来显示特定的排行榜时,它会给我 "hmm,something went wrong in play games"
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);
}
}
});
}
好的,根据 github https://github.com/playgameservices/play-games-plugin-for-unity/issues/2045#issuecomment-350335234
上的评论,我已经弄明白了在这上面花了几个小时后,我的问题原来是我的游戏使用了另一个应用程序的排行榜 ID。 所以它失败了"unauthorized error",但是没有给出确切的原因。
之所以会这样,是因为unity中的玩游戏配置缓存了旧值。当您打开它时 - 它具有正确的 ID,但是在生成的 GPGSids.cs 文件中 - 存在错误的 ID。
解决方案就是通过重新保存配置来重新生成它。