Две системы ввода
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 43 из 56.
В Unity есть два способа считывать ввод с клавиатуры и мыши. Первый — тот, который вы использовали до сих пор, — это Input Manager: класс Input с методами GetKey, GetAxis и GetButtonDown, а также оси и кнопки, названные в Project Settings > Input Manager. Более новый вариант — это пакет Input System (com.unity.inputsystem). Его скрипты начинаются с using UnityEngine.InputSystem;, а устройства в нём представлены объектами, например Keyboard.current и Mouse.current, и действиями (actions): именованными действиями игрока, такими как Move и Jump, каждое из которых привязано к клавишам, стикам и кнопкам.
Какой вариант использует проект, задаётся настройкой Player: Edit > Project Settings > Player > Other Settings > Active Input Handling. Доступны три варианта: Input Manager (Old), Input System Package (New) и Both. Новый проект Unity 6 по умолчанию использует Input System Package (New), и в нём каждый вызов класса Input вызывает InvalidOperationException с сообщением о том, что вы считываете ввод через UnityEngine.Input, хотя проект использует пакет Input System. Поэтому в предыдущих уроках вам предлагалось выбрать Both. Чтобы изменить эту настройку, нужно перезапустить редактор, что Unity предложит сделать.
В Unity 6 по умолчанию используется новая система, потому что один API работает с клавиатурами, мышами, геймпадами, сенсорными экранами и XR-контроллерами, а действия позволяют не указывать клавиши в коде: скрипт считывает действие Jump, и одна и та же строка кода работает для клавиши Space, кнопки A на геймпаде или экранной кнопки телефона, а также для игрока, который переназначил клавишу. Старый Input Manager остаётся для старых проектов. Окно игры Coddy работает как режим Both, поэтому клавиши, щелчки и панель телефона (стрелки и Jump) доступны обеим системам. В оставшейся части этой главы используется Input System.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке3Менеджер игры
Один скрипт управляет игройОдиночкаСостояния игрыПереключение состоянияПовторение: менеджер раундов6Проект: бесконечный раннер
Три полосыПрепятствия впереди9Новая система ввода
Две системы вводаКлавиатура и мышьНажатие в текущем кадреДействия вводаПовторение: смена системы ввода