Обзор новой системы ввода Unity

Новая система ввода в Unity обеспечивает обновленный, гибкий и более интуитивный подход к обработке ввода в играх. С помощью этой системы разработчики могут работать с различными устройствами — от игровых контроллеров до VR-телефонов, делая игровой процесс более динамичным и захватывающим.

1. Почему новая система

традиционная система ввода в Unity была ограничена в своих возможностях и не столь расширяема. Новая система ввода предлагает унифицированный API, устраняющий предыдущие ограничения и предоставляющий расширенные функции для разработки современных игр.

2. Настройка

Чтобы начать использовать новую систему ввода, ее сначала необходимо установить из диспетчера пакетов в Unity. После добавления переход со старой системы требует определенных корректировок в скриптах и ​​настройках.

3. Ключевая особенность

  • Действия и привязки: Вместо прямых ссылок на кнопки или клавиши разработчики определяют действия, а затем привязывают эти действия к конкретным клавишам или кнопкам.
  • Вариативность устройств: Легко поддерживает несколько устройств: от традиционных геймпадов до сенсорных экранов и VR-телефонов.
  • Элементы управления игроком: Предоставляет встроенный механизм повторной привязки элементов управления, позволяющий игрокам настраивать элементы управления по своему усмотрению.
  • Расширенная обработка событий:События можно обрабатывать различными способами, будь то на основе опроса или обратного вызова, что дает больше контроля.

4. Создание действия ввода

Действие ввода — это новый тип ресурса, который позволяет определять поведение ввода без необходимости писать сценарии. После создания его можно добавить в сценарий, напрямую связывая игровой процесс с вводом игрока.

5. Реализация в сценариях

  • Новая система ввода легко интегрируется со средой сценариев Unity. Вместо старых методов 'Input.GetKey' или 'Input.GetAxis' эта система использует «действия», которые можно вызывать внутри сценариев. Проверьте пример ниже:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

Давайте разберем приведенный выше пример кода:

  • Пространства имен: Пространство имен 'UnityEngine.InputSystem' необходимо для использования новых функций.
  • 'moveInput': эта переменная хранит входные значения, обычно представляющие горизонтальные и вертикальные входные данные.
  • 'OnMove()': Определенная как общедоступная функция, 'OnMove' может быть напрямую связана с действием ввода в редакторе Unity. Этот метод использует 'InputAction.CallbackContext' для чтения входных значений и присвоения их нашей переменной 'moveInput'.
  • 'Update()': В методе 'Update' сохраненные входные значения определяют направление движения. Ввод преобразуется в 3D-вектор для движения персонажа с учетом заданной скорости и Unity 'Time.deltaTime' для движения, независимого от кадра.

Чтобы этот скрипт работал, важно связать метод 'OnMove' с действием ввода через редактор Unity. Это соединение гарантирует, что когда игрок вводит данные (например, перемещает джойстик или нажимает клавиши со стрелками), соответствующее действие запускает нужный скрипт function.

Заключение

Новая система ввода в Unity — это мощная и необходимая эволюция, соответствующая потребностям современной разработки игр. Он предлагает универсальность, точность и пользовательскую настройку, делая игру взаимодействия более увлекательной и отзывчивой.

Рекомендуемые статьи
5 важных советов для начинающих разработчиков игр
Руководство по игре «Рыбалка» для Unity
Создание простой игры-платформера в Unity
Введение в систему частиц в Unity
Введение в процедурную генерацию в Unity
Как создать игру-викторину в Unity
Как создать 2D-игру, похожую на Super Mario, в Unity