如何在Unity中加载分数?

时间:2017-06-03 14:45:34

标签: c# unity5 google-play-games unity2d

我在Google Play上发布了一款简单的游戏。当玩家赢得游戏时,他的分数应该在排行榜中增加。我的问题是,当玩家赢得比赛时,应用会停止。我认为问题出在PlayGamesPlatform.Instance.LoadScores,因为当我删除这部分时,没有人遇到问题。另外,我想注意并非每个玩家在游戏中都有这样的问题。这个问题恰好发生在那些没有赢过比赛的人身上(他们在排行榜上没有得分)。因此,PlayGamesPlatform.Instance.LoadScores仅适用于已经在排行榜中获得一些分数的人。

我的剧本:

PlayGamesPlatform.Instance.LoadScores(GPGSIds.leaderboard_rating, GooglePlayGames.BasicApi.LeaderboardStart.PlayerCentered, 1, GooglePlayGames.BasicApi.LeaderboardCollection.Public, GooglePlayGames.BasicApi.LeaderboardTimeSpan.AllTime, (GooglePlayGames.BasicApi.LeaderboardScoreData data) =>
{
    long score;
    if (long.TryParse(data.PlayerScore.formattedValue, out score))
        Social.ReportScore(score + 50, GPGSIds.leaderboard_rating, (bool success) => { });
    else
        Social.ReportScore(50, GPGSIds.leaderboard_rating, (bool success) => { });
});

1 个答案:

答案 0 :(得分:1)

试试这个google sample from github

使用PlayGamesPlatform.LoadScores()

此方法直接使用PlayGamesPlatform。在访问排行榜数据时,此方法提供了额外的灵活性和信息。

 PlayGamesPlatform.Instance.LoadScores(
            GPGSIds.leaderboard_leaders_in_smoketesting,
            LeaderboardStart.PlayerCentered,
            100,
            LeaderboardCollection.Public,
            LeaderboardTimeSpan.AllTime,
            (data) =>
            {
                mStatus = "Leaderboard data valid: " + data.Valid;
                mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
            });

LoadScores()的参数是:

  

leaderboardId开始位置(最高分或以玩家为中心)的行数   排行榜集合(社交或公共)时间跨度(每日,每周,   接受LeaderboardScoreData对象的所有回调。该   LeaderboardScoreData类用于将信息返回给   加载分数时调用者。成员是:    1. Id - 排行榜ID 2.有效 - 如果返回的数据有效(调用成功),则为true 3.状态 - 响应状态的响应状态   呼叫4. ApproximateCount - 大概的分数   排行榜5.标题 - 排行榜的标题6. PlayerScore -   当前玩家的得分7.得分 - 得分列表8。   PrevPageToken - 可用于调用LoadMoreScores()的标记   得到上一页的分数。 9. NextPageToken - 可以的令牌   用于调用LoadMoreScores()以获取下一页的分数。

void GetNextPage(LeaderboardScoreData data)
    {
        PlayGamesPlatform.Instance.LoadMoreScores(data.NextPageToken, 10,
            (results) =>
            {
                mStatus = "Leaderboard data valid: " + data.Valid;
                mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
            });
    }

其他参考How to get the user score value from Google Play Services Leaderboard

<强> P.S:

尝试将所有玩家的得分设置为默认值0,以便尚未玩过的玩家可以拨打loadScores。