2017-06-03 57 views
1

我有一個在Google Play上發佈的簡單遊戲。當玩家贏得比賽時,他的分數應該在排行榜上增加。我的問題是,當玩家贏得比賽時,應用停止。我認爲這個問題在PlayGamesPlatform.Instance.LoadScores因爲當我刪除這部分,沒有人有問題。另外,我想要注意的是,並不是每個玩家在遊戲中都有這樣的問題。這個問題只發生在那些沒有贏過比賽的人(他們在排行榜上沒有得分)。所以,PlayGamesPlatform.Instance.LoadScores只適用於那些在排行榜中已經有一定分數的人。如何在Unity中加載分數?

我的腳本:

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) => { }); 
}); 
+0

您可以嘗試將所有玩家的分數設置爲默認值0,以便尚未玩過的玩家可以撥打loadScores電話嗎? – noogui

+0

@noogui謝謝。它幫助我 – irakliy01

+0

Gj!很高興聽到它爲你工作。 – noogui

回答

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.狀態 - 調用 的ResponseStatus 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電話。