我想要一個GameKit中的排行榜,它顯示了我在多個遊戲中的總累積分數,而不僅僅是來自單個遊戲的分數。有沒有辦法做到這一點?是否有可能在GameKit中運行高分排行榜?
換句話說,單個玩家永遠不會在排行榜上擁有多個他們的名字。想想總體經驗的收入,或者一生的爆頭數量。當你有4張爆頭時,你將不會在該排行榜中進入,然後當你有20張爆頭時。你只需要一次輸入20次生命爆頭。
我想要一個GameKit中的排行榜,它顯示了我在多個遊戲中的總累積分數,而不僅僅是來自單個遊戲的分數。有沒有辦法做到這一點?是否有可能在GameKit中運行高分排行榜?
換句話說,單個玩家永遠不會在排行榜上擁有多個他們的名字。想想總體經驗的收入,或者一生的爆頭數量。當你有4張爆頭時,你將不會在該排行榜中進入,然後當你有20張爆頭時。你只需要一次輸入20次生命爆頭。
你可以做到這一點,但你必須自己管理。 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
}];
);
}];
}
是的,也許可以。但是你必須閱讀蘋果紀錄片。這是關於GKLeaderBoardViewController類的。 您可以使用GKLeaderBoardViewController類來計算Highest Score。
感謝您的回覆。我已經走了一條不同的路線,但是你展示的代碼看起來好像能完成這項工作。 – blachniet 2013-03-19 11:54:49