GameMaker: Обработка аппаратных кнопок на Android

Обработка аппаратных кнопок Android в GameMaker: Studio

Одним из часто задаваемых вопросов о GameMaker: Studio является вопрос о том, как обрабатывать нажатия стандартных кнопок на устройствах (Домой, Меню, Назад, Поиск).
Несмотря на предположения, обработка кнопок в GameMaker: Studio довольно проста - нажатия кнопок переназначаются на соответствующие кнопки клавиатуры. То есть для обработки нажатий можно использовать стандартные события нажатия/удержания/отпускания кнопок.

Меню

Кнопка "Меню" переназначается на кнопку клавиатуры "М" (индекс 77). Так же стоит заметить, что при использовании отладочного "плеера" игр (YoYoRunner) кнопка "Меню" открывает меню плеера (содержащее пункты "Настройки" и "Выход"), что может сделать тестирование без компиляции проблематичным.

Назад

Кнопка "Назад" (вероятно знакомая вам как смотрящая влево стрелочка) переназначается на кнопку стирания (Backspace, индекс 8). Все довольно просто и интуитивно.

Поиск

Нажатия кнокпи "Поиск" переназначаются в нажатия кноки Control (индекс 17). Мне не совсем понятна логика, солгасно которой выбор был остановлен на этом соответствии, но это уже вне контекста этой записи. Так же стоит заметить, что на некоторых моделях устройств этой кнопки может не быть вовсе, так что ассоциировать с ней какие-то критически важные действия не стоит.

Домой

Я не уверен, зачем вообще задается вопрос о том, можно ли привязать какое-то действие на кнопку "Домой". Нажатия этой кнопки обрабатываются операционной системой Android (обычно приводя к сворачиванию активного приложения и выходу на начальный экран), поэтому приложения ничего с ней делать не могут. Вы ведь не собирались держать игрока внутри игры до конца его/ее дней, не так ли?

Замечания

Несмотря на переназначение кнопок, в версии 1.1.917 аппаратные кнопки все еще не вызывают смены keyboard_lastkey / keyboard_lastchar. Так что лучше пока не использовать их в комбинации с этими переменными.

Надеюсь, это было полезным.

GameMaker: Поле ввода

Есть множества случаев, в которых вам может понадобится дать пользователю возможность вводить текст привычным способом, принимая во внимания системные настройки и предоставляя возможность мелких изменений (таких как передвижение курсора по тексту). Такие случаи включают в себя чаты, консольные интерфейсы, поля ввода текста, и прочее. Этот пример покрывает большинство типичных потребностей для таких вещей довольно коротким (менее 70 строк) и понятным кодом. Он включает в себя следующие особенности:

  • Сохраняет текущий текст при потере фокуса окна. Если вам доводилось работать с вводом текста в GameMaker, возможно вы уже заметили это неприятное стандартное поведение.
  • Позволяет перемещать курсор по вводимой строке (кнопки влево / вправо / home / end)
  • Позволяет удалять символы после курсора с помощью Delete (почему я не вижу этого во многих играх?)
  • Может быть легко модифицирован для добавления дополнительных сочетаний клавиш и функций

Пример включает в себя непосредственное поле ввода и простой список, выводящий вводимые строки по нажатию Enter.

Скачать GMK