У моего GKMatch нет игроков ...? - PullRequest
0 голосов
/ 03 апреля 2011
  • Я успешно вывел экран сватовства.
  • Я запускаю игру на своем iPhone, а также на симуляторе.
  • В обоих случаях я вхожу с другой учетной записью Game Center.
  • Я иду на экран сватовства в обеих играх. Я нажимаю «играть сейчас». Обе игры начинают искать совпадение.
  • Наконец, обе игры находят совпадение и вызывают следующую функцию:

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
{
    self.myMatch = match;
    NSLog(@"%d",[[self.myMatch playerIDs]count]);

}

Но моя консоль возвращает 0. Разве она не должна возвращать 2 вместо?

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

GKMatchmaker возвращает вам матч до установления соединения между игроками;на этом этапе все игроки находятся в процессе соединения друг с другом.

Свойство playerIDs изначально устанавливается на количество игроков, уже подключенных к матчу;массив может быть пустым.Когда игрок подключается к матчу, его идентификатор добавляется в массив.

Кроме того, некоторые игроки могут не подключиться (я не проверял этот случай, поэтому не знаюесли вы получите сообщение об ошибке)

Вы ищете GKMatch.expectedPlayerCount

Значение этого свойства уменьшается, когда игрок подключается к матчу.Когда его значение достигает нуля, все ожидаемые игроки подключаются, и ваша игра может начать матч.

Я также подозреваю, что GKMatch.playerIDs не включает игрока;то есть вы, вероятно, сразу увидите ожидаемыйPlayerCount = 1 после подключения.

Я не уверен, что GameKit делает с потоками.

2 голосов
/ 05 апреля 2011

Может быть, вы на самом деле не соединяете их?

Вы на самом деле используете GKMatchmaker и GKMatchmakerViewController?

В своем тестировании вы уверены, что используете ДВЕ РАЗНЫЕ учетные записи игрового центра?

Боюсь, я не знаком с системой игрового центра - но я добавил награду в 100 очков, чтобы вы могли надеяться на ответ!

...