Unity GooglePlayGames LoadScores 总是 returns 没有

Unity GooglePlayGames LoadScores always returns nothing

我正在尝试使用 Google Play Games 从排行榜中获取最高分,但 return 没有任何结果。有人能给我指出正确的方向吗?

    public int WorldRecord()
{
    int topScore = 0;
    PlayGamesPlatform.Instance.LoadScores(
        GPGSIds.leaderboard_quick_fire_scores,
        LeaderboardStart.TopScores, 1,
        LeaderboardCollection.Public,
        LeaderboardTimeSpan.AllTime,
        (LeaderboardScoreData data) =>
        {
            topScore = (int)data.Scores[0].value;
        });

    return topScore;
        
}

谢谢

PlayGamesPlatform.Instance.LoadScores 异步运行并在完成后执行传递的操作。

但是,您的方法不会等到该请求实际完成,因此只是 returns 默认值 0 已经在 LoadScores 实际完成并提供有效结果之前.

您或许应该使用某种回调,例如

public void WorldRecord(Action<int> onResult)
{
    PlayGamesPlatform.Instance.LoadScores(
        GPGSIds.leaderboard_quick_fire_scores,
        LeaderboardStart.TopScores, 1,
        LeaderboardCollection.Public,
        LeaderboardTimeSpan.AllTime,
        (LeaderboardScoreData data) =>
        {
            onResult?.Invoke((int)data.Scores[0].value);
        });        
}

然后传递一个回调,当结果准备好时应该发生什么,例如

WorldRecord(topScore => 
{
    Debug.Log($"Top Score: {topScore}");
});