Можно ли сделать беговой список лидеров в GameKit? - PullRequest
0 голосов
/ 13 марта 2012

Мне нужен список лидеров в GameKit, который показывает мой общий накопленный счет за несколько игр, а не только счет за одну игру.Есть ли способ сделать это?

Другими словами, один игрок никогда не будет иметь более одной записи на свое имя в таблице лидеров.Подумайте общее количество опытных заработанных или количество выстрелов в голову.У вас не будет записи в этом списке лидеров, когда у вас было 4 выстрела в голову, а затем, когда у вас было 20 выстрелов в голову.У вас будет всего одна запись на 20 выстрелов в голову.

Ответы [ 2 ]

1 голос
/ 19 марта 2013

Вы можете сделать это, но вы должны сами управлять этим.GameKit ориентирован на одиночную игру, а не на совокупную оценку.Обратите внимание, что игрок не будет появляться более одного раза в таблице лидеров, потому что GKLeaderboard сообщит только о самом высоком балле за указанный вами промежуток времени.

Отслеживание совокупного счета не так сложно.Вот код, который я использую для этого.Получите 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 голосов
/ 12 апреля 2012

Да, это возможно. Но вы должны прочитать документальный фильм Apple. Это все о классе GKLeaderBoardViewController. Вы можете использовать класс GKLeaderBoardViewController для подсчета наивысшего балла.

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

...