我希望GameKit中的排行榜能够显示我在多场比赛中的总积分,而不仅仅是单场比赛的得分。有没有办法做到这一点?
换句话说,单个玩家在排行榜中的名字永远不会有多个条目。想想总经验丰富,或终身爆头数。当你有4个爆头时,你不会在那个排行榜上有一个条目,然后当你有20个爆头时。你只需拥有20个终身爆头的一个条目。
答案 0 :(得分: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
}];
);
}];
}
答案 1 :(得分:0)
是的,有可能。但你必须阅读苹果纪录片。这是关于GKLeaderBoardViewController类的。 您可以使用GKLeaderBoardViewController类来计算最高分数。