Обнаружение и соединение с контроллерами
В Вашей игре физический контроллер представлен a GCController
объект. Когда контроллер подключен, объект автоматически создается платформой Игрового контроллера. Вы тогда используете этот объект сконфигурировать контроллер и считать его вводы.
В этой главе, Вас:
Изучите, как Ваша игровая справка пользователь обнаруживает непарный беспроводной контроллер
Получить
GCController
объекты для подключенных контроллеровСконфигурируйте подключенный контроллер
Обнаружение беспроводных контроллеров
Беспроводной контроллер должен быть обнаружен, прежде чем он соединится с устройством на iOS или Mac. Процесс открытия инициирован и на контроллере и на устройстве, и этим двум позволяют соединиться друг с другом. После того, как открытие завершено, устройства соединяются, и контроллер подключен. Новый контроллер обнаружен только один раз. После этого, если устройство и контроллер и включены одновременно, они автоматически находят и соединяются друг с другом.
Обычно, открытие происходит вне Вашей игры — т.е. проигрыватель обычно соединяет контроллер прежде, чем запустить Вашу игру. Однако можно позволить проигрывателю обнаружить новые контроллеры из игры.
Процесс открытия выполняет эти шаги:
Чтобы начать обнаруживать новые контроллеры, вызовите
startWirelessControllerDiscoveryWithCompletionHandler:
метод класса, передающий в обработчике завершения. Новые контроллеры автоматически обнаружены и соединены с устройством.Процесс открытия в конечном счете останавливается, через какое-то время передал, но закончить его рано, можно вызвать
stopWirelessControllerDiscovery
метод класса.После концов процесса открытия платформа Игрового контроллера вызывает Ваш обработчик завершения.
Вот некоторые полезные инструкции для рассмотрения при реализации поддержки открытия:
Разработайте и выведите на экран надлежащий интерфейс пользователю. Нет никакого встроенного пользовательского интерфейса, выведенного на экран когда в режиме открытия. Платформа управляет только процессом открытия. В то время как процесс открытия активен, Вы могли бы обеспечить кнопку в своем пользовательском интерфейсе, чтобы запустить процесс и изменить его на кнопку отмены.
Пауза активный геймплей до процесса открытия завершается. Процесс открытия может занять много времени для завершения, и проигрыватель может быть неспособен взаимодействовать с игрой при соединении контроллера.
Нахождение подключенных контроллеров
После того, как Ваше приложение закончило запускаться, операционная система автоматически создает список подключенных контроллеров. Вызовите controllers
метод класса получить массив GCController
объекты для всех подключенных контроллеров. Затем, используйте эти объекты сконфигурировать контроллеры или считать вводы контроллера. Если не будет никаких подключенных контроллеров, или Вы вызываете этот метод, в то время как Ваше приложение запускается, то массив будет пуст.
После того, как первоначальный список контроллеров заполняется, платформа Игрового контроллера отправляет уведомления, когда контроллер подключен (GCControllerDidConnectNotification
) или разъединенный (GCControllerDidDisconnectNotification
). Ваша игра должна почти всегда регистрироваться для обоих уведомлений для обеспечения надлежащего пользовательского опыта. Объект уведомления object
свойство содержит GCController
объект для контроллера, состояние которого только что изменилось.
Поскольку число контроллеров может варьироваться, Вам нужно надлежащее поведение для Вашей игры. Вот некоторые инструкции:
Если никакие контроллеры не подключены, используйте свой стандартный пользовательский интерфейс для управления игрой.
Если единственный контроллер подключен, всегда используйте его.
Если многократные контроллеры подключены, и один из них является облегающим контроллером, сделайте его контроллером по умолчанию. Если все подключенные контроллеры автономны, обеспечьте путь к проигрывателям для выбора контроллера.
Если многократные контроллеры подключены, и Ваша игра поддерживает многократные проигрыватели, присвойте контроллер каждому проигрывателю.
Используя объект контроллера
Как правило, Вы хотите поддержать сильную ссылку к объектам контроллера для подключенных контроллеров, используемых Вашей игрой. Используйте эти объекты выполнить связанные с контроллером задачи. Например, Вы часто должны:
Получите информацию о контроллере, такой как, является ли это облегающим контроллером
Сконфигурируйте индекс проигрывателя на контроллере так, чтобы можно было связать его с определенным проигрывателем
Присвойте блок объекту контроллера
controllerPausedHandler
свойство, которое вызовут, когда проигрыватель нажимает кнопку паузыСчитайте свойства профиля объекта контроллера для получения ввода контроллера; посмотрите Работу с Элементами Контроллера
Некоторые из этих задач представлены здесь. Для определенных подробных данных см. Ссылку класса GCController.
Индексы проигрывателя постоянно идентифицируют контроллер
Индекс проигрывателя связывает контроллер с определенным проигрывателем. playerIndex
свойство является персистентным значением, сохраненным в физическом контроллере. Это сохраняет то же индексное значение, пока игра на устройстве не изменяет свое значение.
Вот некоторые инструкции для индексов проигрывателя:
Когда контроллер подключен, и Ваша игра находится на переднем плане, установите индекс контроллера в значение, которое целесообразно в Вашей игре.
Индексное значение может быть
0
или любое положительное целочисленное значение, но обычно Вы используете числа в пределах от0
через3
. Используя значение в этих причинах диапазона соответствие Вовлекло контроллер для освещения.Если Вы не хотите идентифицировать контроллер, присваивать его значение
GCControllerPlayerIndexUnset
. Это гарантии качества, что не освещен LEDs на контроллере. Например, Вы могли бы сделать это для контроллера, подключенного, но не в настоящее время быть используемым Вашей игрой.