2012-03-12 58 views
0

我想要一個GameKit中的排行榜,它顯示了我在多個遊戲中的總累積分數,而不僅僅是來自單個遊戲的分數。有沒有辦法做到這一點?是否有可能在GameKit中運行高分排行榜?

換句話說,單個玩家永遠不會在排行榜上擁有多個他們的名字。想想總體經驗的收入,或者一生的爆頭數量。當你有4張爆頭時,你將不會在該排行榜中進入,然後當你有20張爆頭時。你只需要一次輸入20次生命爆頭。

回答

1

你可以做到這一點,但你必須自己管理。 GameKit圍繞單一遊戲的高分,而不是累積分數。請注意,玩家在排行榜上不會出現超過一次,因爲GKLeaderboard只會報告您指定時間範圍內的最高分數。

跟蹤累計分數並不難。這裏有一些我用來做這個的代碼。使用跟蹤分數的ID獲取GKLeaderboard,然後獲取本地用戶的高分。然後,將新總數添加到當前高分,然後報告新總數。

- (void)updateLeaderboardWithID:(NSString *)identifier score:(int64_t)score { 
    GKLeaderboard* leaderBoard= [[GKLeaderboard alloc] init]; 
    leaderBoard.category = identifier; 
    leaderBoard.timeScope = GKLeaderboardTimeScopeAllTime; 
    leaderBoard.range = NSMakeRange(1, 1); 

    [leaderBoard loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) { 
      dispatch_async(dispatch_get_main_queue(), ^(void) { 
       GKScore *localScore = leaderBoard.localPlayerScore; 
       int64_t newValue = localScore.value + score; 
       localScore = [[GKScore alloc] initWithCategory:identifier]; 
       localScore.value = newValue; 
       [localScore reportScoreWithCompletionHandler:^(NSError *error){ 
        // error handling goes here 
       }]; 
      ); 
    }]; 
} 
+0

感謝您的回覆。我已經走了一條不同的路線,但是你展示的代碼看起來好像能完成這項工作。 – blachniet 2013-03-19 11:54:49