あなたはこれを行うことができますが、それを自分で管理する必要があります。 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
}];
);
}];
}
ありがとうございました。私は別のルートに行くのをやめましたが、あなたが見せているコードは仕事をするように見えます。 – blachniet