Обнаружение и соединение с контроллерами

В Вашей игре физический контроллер представлен a GCController объект. Когда контроллер подключен, объект автоматически создается платформой Игрового контроллера. Вы тогда используете этот объект сконфигурировать контроллер и считать его вводы.

В этой главе, Вас:

Обнаружение беспроводных контроллеров

Беспроводной контроллер должен быть обнаружен, прежде чем он соединится с устройством на iOS или Mac. Процесс открытия инициирован и на контроллере и на устройстве, и этим двум позволяют соединиться друг с другом. После того, как открытие завершено, устройства соединяются, и контроллер подключен. Новый контроллер обнаружен только один раз. После этого, если устройство и контроллер и включены одновременно, они автоматически находят и соединяются друг с другом.

Обычно, открытие происходит вне Вашей игры — т.е. проигрыватель обычно соединяет контроллер прежде, чем запустить Вашу игру. Однако можно позволить проигрывателю обнаружить новые контроллеры из игры.

Процесс открытия выполняет эти шаги:

  1. Чтобы начать обнаруживать новые контроллеры, вызовите startWirelessControllerDiscoveryWithCompletionHandler: метод класса, передающий в обработчике завершения. Новые контроллеры автоматически обнаружены и соединены с устройством.

  2. Процесс открытия в конечном счете останавливается, через какое-то время передал, но закончить его рано, можно вызвать stopWirelessControllerDiscovery метод класса.

  3. После концов процесса открытия платформа Игрового контроллера вызывает Ваш обработчик завершения.

Вот некоторые полезные инструкции для рассмотрения при реализации поддержки открытия:

Нахождение подключенных контроллеров

После того, как Ваше приложение закончило запускаться, операционная система автоматически создает список подключенных контроллеров. Вызовите controllers метод класса получить массив GCController объекты для всех подключенных контроллеров. Затем, используйте эти объекты сконфигурировать контроллеры или считать вводы контроллера. Если не будет никаких подключенных контроллеров, или Вы вызываете этот метод, в то время как Ваше приложение запускается, то массив будет пуст.

После того, как первоначальный список контроллеров заполняется, платформа Игрового контроллера отправляет уведомления, когда контроллер подключен (GCControllerDidConnectNotification) или разъединенный (GCControllerDidDisconnectNotification). Ваша игра должна почти всегда регистрироваться для обоих уведомлений для обеспечения надлежащего пользовательского опыта. Объект уведомления object свойство содержит GCController объект для контроллера, состояние которого только что изменилось.

Поскольку число контроллеров может варьироваться, Вам нужно надлежащее поведение для Вашей игры. Вот некоторые инструкции:

Используя объект контроллера

Как правило, Вы хотите поддержать сильную ссылку к объектам контроллера для подключенных контроллеров, используемых Вашей игрой. Используйте эти объекты выполнить связанные с контроллером задачи. Например, Вы часто должны:

Некоторые из этих задач представлены здесь. Для определенных подробных данных см. Ссылку класса GCController.

Индексы проигрывателя постоянно идентифицируют контроллер

Индекс проигрывателя связывает контроллер с определенным проигрывателем. playerIndex свойство является персистентным значением, сохраненным в физическом контроллере. Это сохраняет то же индексное значение, пока игра на устройстве не изменяет свое значение.

Вот некоторые инструкции для индексов проигрывателя:

  • Когда контроллер подключен, и Ваша игра находится на переднем плане, установите индекс контроллера в значение, которое целесообразно в Вашей игре.

  • Индексное значение может быть 0 или любое положительное целочисленное значение, но обычно Вы используете числа в пределах от 0 через 3. Используя значение в этих причинах диапазона соответствие Вовлекло контроллер для освещения.

  • Если Вы не хотите идентифицировать контроллер, присваивать его значение GCControllerPlayerIndexUnset. Это гарантии качества, что не освещен LEDs на контроллере. Например, Вы могли бы сделать это для контроллера, подключенного, но не в настоящее время быть используемым Вашей игрой.