Когда вызывается игрок (_:wantToQuitMatch:)?
Я реализую свою первую игру Turn Based с Game Center, и мне трудно понять, кто получает уведомление от player(_:wantsToQuitMatch:)
,
Получает ли это уведомление текущий игрок, который выходит (с помощью какого-либо метода выхода из игры)? Получают ли другие игроки уведомление о выходе текущего игрока? Что произойдет, если текущий игрок выйдет из Game Center (удалит игру)?
Я пытался удалить игру в Game Center, когда настала моя очередь, и этот метод не запускается для игроков, которые все еще находятся в игре. Я не могу заставить этот метод срабатывать.
2 ответа
После нескольких лет работы с GKTurnBasedMatch
Я никогда не видел wantsToQuitMatch
Пожар. Никогда. Ни разу.
(Перегруженная) функция, receivedTurnEventForMatch
это единственная функция, которая срабатывает, когда игрок присоединяется или уходит. (См. Мой ответ на /questions/47342335/gamecenter-ios-9-metodyi-gamecenter-gklocalplayerlistener-ne-vyizvanyi/47342392#47342392 для получения дополнительной информации о срабатывании каждой из функций). Это боль, потому что receivedTurnEventForMatch
срабатывает во многих различных обстоятельствах, и вам остается только определить, какой из них вызвал его.
Это был не ваш вопрос, но так как вы только начинаете с пошаговых матчей, если вы еще не слишком много вложили, я предлагаю вам рассмотреть новые GKGameSession
объявлено на WWDC в этом году. GKTurnBasedMatch
имеет множество ограничений, которые могут оставить игры в затруднительном положении (не может быть продолжен ни одним игроком). Я только начинаю изучать игровые сессии; однако, на первый взгляд, они дают вам гораздо больший контроль и значительно больший объект данных соответствия (512 КБ против 64 КБ).
Я вижу player(_:wantsToQuitMatch:)
срабатывают, когда я вызываю вид GameCenter и нажимаю на игру, в которой я сейчас принимаю участие, и пытаюсь "проиграть" эту игру. Хотя я вижу это огонь, я еще не уверен, что с ним делать. В данный момент я ничего не делаю и игрок не выходит из игры.