Input Manager
The Input Manager is where you define all the different input axes and game actions for your project.

To see the Input Manager choose: Edit->Project Settings->Input.
Свойства
| Свойство: | Функция: |
|---|---|
| Axes | Contains all the defined input axes for the current project: Size is the number of different input axes in this project, Element 0, 1, … are the particular axes to modify. |
| Name | Название оси в лаунчере игры (game launcher) и скриптах. |
| Descriptive Name | A detailed definition of the Positive Button function that is displayed in the game launcher. |
| Descriptive Negative Name | A detailed definition of the Negative Button function that is displayed in the game launcher. |
| Negative Button | Кнопка, которая будет отражать отрицательные значения на оси. |
| Positive Button | Кнопка, которая будет отражать положительные значения на оси. |
| Alt Negative Button | Дополнительная кнопка, которая будет отражать отрицательные значения на оси. |
| Alt Positive Button | Дополнительная кнопка, которая будет отражать положительные значения на оси. |
| Gravity | How fast will the input recenter. Only used when the Type is key / mouse button. |
| Dead | Любое положительное или отрицательное значение, по модулю меньшее заданного числа, будет зафиксировано как нуль. Полезно для джойстиков. |
| Sensitivity | В случае ввода с клавиатуры, большее значение (на оси) будет соответствовать более быстрой реакции. Меньшее значение будет соответствовать более сглаженному. В случае мышки, значение будет увеличивать фактическое смещение мышки. |
| Snap | If enabled, the axis value will be immediately reset to zero after it receives opposite inputs. Only used when the Type is key / mouse button. |
| Invert | Если включено, то инвертирует ось ввода. |
| Type | Use Key / Mouse Button for any kind of buttons, Mouse Movement for mouse delta and scrollwheels, Joystick Axis for analog joystick axes and Window Movement for when the user shakes the window. |
| Axis | Ось ввода с устройств (джойстик, мышка, геймпад и др.). |
| Joy Num | Какой джойстик используется. По умолчанию считывание производится со всех джойстиков. Используйте это только в случае считывания с осей и не используйте для кнопок. |
Детали
Все оси, которые вы настроили в Input Manager служат двум целям:
- При скриптовании это позволит вам считывать значения с оси, посредством её имени
- Это позволит игрокам вашей игры настроить управление на свой вкус
Все определенные оси будут представлены игроку в лаунчере игры, где игрок сможет увидеть имена осей, детальное описание осей и кнопки по умолчанию. Здесь игроки имеют возможность изменить любые кнопки, определенные на осях. Следовательно, лучше всего писать скрипты с использованием осей вместо отдельных кнопок, которые игрок может переназначить в вашей игре.
Input Manager
Input Manager это то, где вы можете задать различные оси ввода и игровые действия для своего проекта.

To see the Input Manager choose: Edit > Project Settings > Input. Note that the Input clsss provides more details.
Свойства
| Свойство: | Функция: |
|---|---|
| Axes | Содержит все оси ввода, определенные для текущего проекта: Size это количество различных осей ввода в проекте, Element 0, 1, … конкретные оси ввода, подлежащие модификации. |
| Имя | Название оси в лаунчере игры (game launcher) и скриптах. |
| Descriptive Name | Детальное определение функции Positive Button, которое отображается в лаунчере игры. |
| Descriptive Negative Name | Детальное определение функции Negative Button, которое отображается в лаунчере игры. |
| Negative Button | Кнопка, которая будет отражать отрицательные значения на оси. |
| Positive Button | Кнопка, которая будет отражать положительные значения на оси. |
| Alt Negative Button | Дополнительная кнопка, которая будет отражать отрицательные значения на оси. |
| Alt Positive Button | Дополнительная кнопка, которая будет отражать положительные значения на оси. |
| Gravity | Как быстро оси центрируются. Используйте только в случае, когда Type принимает значение key / mouse button. |
| Dead | Любое положительное или отрицательное значение, по модулю меньшее заданного числа, будет зафиксировано как нуль. Полезно для джойстиков. |
| Sensitivity | В случае ввода с клавиатуры, большее значение (на оси) будет соответствовать более быстрой реакции. Меньшее значение будет соответствовать более сглаженному. В случае мышки, значение будет увеличивать фактическое смещение мышки. |
| Snap | Если включено, то при получении значения (с оси) с противоположным знаком оно будет сброшено к нулю. Используйте только в случае, когда Type принимает значение key / mouse button. |
| Invert | Если включено, то инвертирует ось ввода. |
| Тип | Для кнопок используйте Key / Mouse Button, для движения мышки или колесика мыши используйте Mouse Movement, для аналоговых осей джойстика используйте Joystick Axis, а если пользователь будет “дёргать” окошко используйте Window Movement. |
| Axis | Ось ввода с устройств (джойстик, мышка, геймпад и др.). |
| Joy Num | Какой джойстик используется. По умолчанию считывание производится со всех джойстиков. Используйте это только в случае считывания с осей и не используйте для кнопок. |
Детали
Все оси, которые вы настроили в Input Manager служат двум целям:
- При скриптовании это позволит вам считывать значения с оси, посредством её имени
- Это позволит игрокам вашей игры настроить управление на свой вкус
Все определенные оси будут представлены игроку в лаунчере игры, где игрок сможет увидеть имена осей, детальное описание осей и кнопки по умолчанию. Здесь игроки имеют возможность изменить любые кнопки, определенные на осях. Следовательно, лучше всего писать скрипты с использованием осей вместо отдельных кнопок, которые игрок может переназначить в вашей игре.
Input менеджер
Окно Диспетчер ввода позволяет определить оси ввода и связанные с ними действия для вашего проекта. Чтобы получить к нему доступ, в главном меню Unity выберите Правка > Настройки проекта, затем выберите Диспетчер ввода на панели навигации справа.
Диспетчер ввода использует следующие типы элементов управления:
- Клавиша — это любая клавиша на физической клавиатуре, например W, Shift или пробел.
- Под кнопкой понимается любая кнопка на физическом контроллере (например, геймпадах), например кнопка X на контроллере Xbox One.
- Виртуальная ось (во множественном числе: оси) сопоставляется с элементом управления, например кнопкой или клавишей. Когда пользователь активирует элемент управления, ось получает значение в диапазоне [–1..1]. Вы можете использовать это значение в своих скриптах фрагмент кода, позволяющий создавать собственные компоненты, запускать игровые события, изменять компоненты свойства с течением времени и реагировать на пользовательский ввод любым удобным для вас способом. Подробнее
См. в Словарь .
Виртуальные оси
Каждый проект, который вы создаете, имеет ряд входных осей, созданных по умолчанию. Эти оси позволяют сразу использовать ввод с клавиатуры, мыши и джойстика в проекте.
Чтобы узнать больше об этих осях, откройте окно Диспетчер ввода и щелкните стрелку рядом с именем любой оси, чтобы развернуть ее свойства.
Каждая ось ввода имеет следующие свойства:
| Свойства | Функция |
|---|---|
| Name | Имя оси. Вы можете использовать это для доступа к оси из скриптов. |
| Descriptive Name, Descriptive Negative Name | Эти значения устарели и не работают. Раньше они отображались для пользователя на экране Rebind Controls при запуске, но этот экран также устарел. |
| Negative Button, Positive Button | Элементы управления для перемещения оси в отрицательном и положительном направлении соответственно. Это могут быть клавиши на клавиатуре, кнопки на джойстике или мыши. |
| Alt Negative Button, Alt Positive Button | Альтернативные элементы управления для перемещения оси в отрицательном и положительном направлении соответственно. |
| Gravity | Скорость в единицах в секунду, с которой ось падает в нейтральное положение при отсутствии входных данных. |
| Dead | Как далеко пользователь должен переместить аналоговый джойстик, прежде чем ваше приложение зарегистрирует движение. Во время выполнения ввод со всех аналоговых устройств, попадающих в этот диапазон, будет считаться нулевым. |
| Sensitivity | Скорость в единицах в секунду, с которой ось будет двигаться к целевому значению. Это только для цифровых устройств. |
| Snap | Если включено, значение оси будет сброшено до нуля при нажатии кнопки, соответствующей противоположному направлению.. |
| Type | Тип ввода, который управляет осью. Выберите из этих значений: |
— Клавиша или кнопка мыши
— Движение мыши
— Ось джойстика
Значения оси могут быть:
- От –1 до 1 для джойстика и ввода с клавиатуры. Нейтральное положение для этих осей — 0. Некоторые типы элементов управления, например кнопки на клавиатуре, не чувствительны к интенсивности ввода, поэтому они не могут выдавать значения, отличные от –1, 0 или 1.
- Дельта мыши (насколько мышь переместилась в течение последнего кадра) для ввода с помощью мыши. Значения для осей ввода мыши могут быть больше 1 или меньше –1, когда пользователь быстро перемещает мышь.
Добавление, удаление и копирование виртуальных осей
Чтобы добавить виртуальную ось, увеличьте число в поле Размер. Это создает новую ось внизу списка. Новая ось копирует свойства предыдущей оси в списке.
Чтобы удалить виртуальную ось, вы можете:
- Уменьшите число в поле Размер. Это удалит последнюю ось в списке.
- Нажмите правой кнопкой мыши любую ось и выберите Удалить элемент массива.
Примечание. Это действие нельзя отменить.
Чтобы скопировать виртуальную ось, щелкните ее правой кнопкой мыши и выберите Дублировать элемент массива.
Сопоставление виртуальных осей с элементами управления
Чтобы сопоставить клавишу или кнопку с осью, введите ее имя в свойство Положительная кнопка или Отрицательная кнопка в Диспетчере ввода.
Названия ключей соответствуют следующим соглашениям об именах:
| Key family | Соглашение об именовании |
|---|---|
| Letter keys | a , b , c … |
| Number keys | 1 , 2 , 3 … |
| Arrow keys | up , down , left , right |
| Numpad keys | [1] , [2] , [3] , [+] , [equals] … |
| Modifier keys | right shift , left shift , right ctrl , left ctrl , right alt , left alt , right cmd , left cmd |
| Special keys | backspace , tab , return , escape , space , delete , enter , insert , home , end , page up , page down |
| Function keys | f1 , f2 , f3 … |
Кнопки мыши называются mouse 0, mouse 1, mouse 2 и т. д.
Кнопки джойстика имеют следующие соглашения об именах:
| Происхождение кнопки | Соглашение об именовании |
|---|---|
| A specific button on any joystick | joystick button 0 , joystick button 1 , joystick button 2 … |
| A specific button on a specific joystick | joystick 1 button 0 , joystick 1 button 1 , joystick 2 button 0 … |
Вы также можете запросить ввод для определенной клавиши или кнопки с помощью Input.GetKey и соглашения об именах, указанные выше. Например:
Еще один способ получить доступ к ключам — использовать перечисление KeyCode .
Использование виртуальных осей в скриптах
Чтобы получить доступ к виртуальным осям из сценариев, вы можете использовать имя оси.
Например, чтобы запросить текущее значение горизонтальной оси и сохранить его в переменной, можно использовать Input. GetAxis вот так:
float horizontalInput = Input.GetAxis(«Horizontal»);
Для осей, которые описывают событие, а не движение (например, стрельба из оружия в игре), используйте Input .GetButtonDown вместо этого.
Если две или более осей имеют одинаковое имя, запрос возвращает ось с наибольшим абсолютным значением. Это позволяет присвоить имени оси более одного устройства ввода.
Например, вы можете создать две оси с именем Горизонтальная и назначить одну для ввода с клавиатуры, а другую — для ввода с помощью джойстика. Если пользователь использует джойстик, ввод осуществляется с джойстика, а ввод с клавиатуры невозможен. В противном случае ввод осуществляется с клавиатуры, а ввод с джойстика невозможен. Это позволяет вам написать один сценарий, охватывающий ввод с нескольких контроллеров.
Можно использовать данные из горизонтальной и вертикальной осей, а также transform.Translate для перемещения GameObject основного объекта в Сцены Unity, которые могут представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
Просмотреть в Словарь в пространстве XZ (вперед, назад, влево или вправо) . Добавьте следующий код в метод update() в скрипте, прикрепленном к игровому объекту, который вы хотите переместить:
float moveSpeed = 10; //Define the speed at which the object moves. float horizontalInput = Input.GetAxis(«Horizontal»); //Get the value of the Horizontal input axis. float verticalInput = Input.GetAxis(«Vertical»); //Get the value of the Vertical input axis. transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime); //Move the object to XYZ coordinates defined as horizontalInput, 0, and verticalInput respectively.
Time.deltaTime представляет время, прошедшее с момента последнего кадра. Умножение переменной moveSpeed на Time.deltaTime гарантирует, что GameObject будет двигаться с постоянной скоростью в каждом кадре.
Система ввода
Настраивайте элементы управления в одном месте, для всех платформ и устройств без дополнительных инструментов.
Легкость разработки для любой платформы
Система ввода — это основа интерактивности проектов с контентом реального времени. Благодаря нашей системе вы с легкостью сможете настроить управление для различных платформ, от мобильных устройств до VR.
Система Unity стандартизирует методы реализации управления и обеспечивает расширенную функциональность, недостижимую для базовых решений.
Вам достаточно привязать действия к логике кода, а затем включить различные устройства и варианты управления в визуальном интерфейсе окна Input Action. Система ввода также имеет API. Пакет Input System доступен в менеджере пакетов. Он авторизован для Unity 2019 LTS и более новых версий.

Быстрое и гибкое решение

Прочное основание
Мы создали систему ввода для поддержки современных и нестандартных устройств на основе трех главных принципов: простота использования, стабильность для разных платформ и гибкость.

Интуитивно понятный и гибкий процесс
Привязывайте управление к скриптам с помощью компонента Input Action. Он будет считывать схему Action Map и обеспечит обмен данными со скриптом посредством обратных вызовов. Создавайте различные схемы управления, разграничивайте управление для одновременной игры, реализуйте различные методы обмена данными.

В основе разработки Unity
Новая система задумывалась как замена предыдущей, и, хотя вы можете использовать в проекте обе, новые технологии Unity, например, UI Toolkit или DOTS, будут полностью поддерживаться именно новой системой ввода. Присоединяйтесь к обсуждению Input System на форуме и следите за новыми функциями.
Основные характеристики
Поддержка всех платформ Unity
Реализуйте стандартизированное управление для консолей, ПК, мобильных или XR-устройств. Различные схемы управления могут без проблем присутствовать в одном и том же проекте Unity, что делает кроссплатформенную разработку бесшовной, не говоря о поддержке нестандартных устройств.
Быстрая настройка в графическом интерфейсе
Единое окно Input Action позволяет добавлять поддержку различных способов управления и выполняемых ими действий путем создания ассета Input Map, который позже можно использовать с компонентом, который свяжет эти действия с логикой кода. Система ввода также предлагает инструменты для визуализации доступных устройств и органов управления.
Расширенная настройка в стандартной конфигурации
Переопределение на лету, управление для нескольких пользователей одновременно, различные схемы управления, удобная локальная многопользовательская игра, автоматическое определение устройств ввода, переопределение стандартных HID-устройств или ввод независимо от частоты кадров — это лишь некоторые инструменты, которые предлагает система для большинства задач проекта.
Ресурсы и проекты для начинающих
Документация включает руководства для начинающих и описывает большинство граничных сценариев. Кроме того, в пакет входят примеры проектов и инструменты. Все они доступны в менеджере пакетов. Мы также предлагаем обучающие материалы и учебный контент, а также специальный раздел форума для новостей.
Гибкость и расширяемость с помощью API
Нестандартное устройство можно добавить с помощью низкоуровневого скриптового API. Кроме того, система позволяет разрабатывать инструменты тестирования, например, ботов или автоматизированные тесты для ускорения производства или реализовывать собственные процессы для ваших задач.
Доступ к исходному коду
С системой ввода поставляется полный исходный код для доступа к внутренним алгоритмам инструмента, благодаря чему вы можете принять участие в разработке с помощью репозитория на GitHub.