是否有可能在GameKit中运行高分排行榜?

时间:2012-03-12 23:49:53

标签: iphone ios gamekit

我希望GameKit中的排行榜能够显示我在多场比赛中的总积分,而不仅仅是单场比赛的得分。有没有办法做到这一点?

换句话说,单个玩家在排行榜中的名字永远不会有多个条目。想想总经验丰富,或终身爆头数。当你有4个爆头时,你不会在那个排行榜上有一个条目,然后当你有20个爆头时。你只需拥有20个终身爆头的一个条目。

2 个答案:

答案 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类来计算最高分数。

http://developer.apple.com/library/ios/#documentation/GameKit/Reference/GKLeaderboardViewController_Ref/Reference/Reference.html