Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

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

Многие стандартные элементы управления используют KeyDownEvent для кодирования поведения ярлыков или специальных возможностей. Во всех следующих примерах используются события клавиатуры:

  • Классы Toggle и Button прослушивают Enter и Пробел нажимает вместо щелчка мыши.
  • ScrollViewЭлемент управления пользовательского интерфейса, который отображает большой набор элементов управления в видимой области, которую можно увидеть с помощью полосы прокрутки. . Подробнее
    См. в Словарь
    , а элементы управления Slider используют нажатия клавиш со стрелками для модуляции своих значений.
  • Элемент управления TextFieldЭлемент управления TextField отображает неинтерактивный фрагмент текста для пользователя, например заголовок, метку для других элементов управления графическим интерфейсом или инструкций. Подробнее
    См. в Словарь
    смотрит на оба keyCode и свойство символа для выполнения специальных действий или приема текста.

Базовым классом для всех событий клавиатуры является KeyboardEventBase.

Событие Описание Стекает вниз Пузыри вверх Отменяемый
KeyDownEvent Отправляется, когда пользователь нажимает клавишу на клавиатуре.
KeyUpEvent Отправляется, когда пользователь отпускает клавишу на клавиатуре.

Уникальные свойства

keyCode: свойство keyCode возвращает ключ символа, который непосредственно соответствует физическому ключу. на устройстве ввода, таком как клавиатура или джойстик. Разница между свойством character и свойством keyCode заключается в том, что keyCode представляет физический ключ, а character представляет ввод определенного символа. Например, и a, и A возвращают keyCode=KeyCode.A во время keyDownEvent.

character: свойство character возвращает код символа во время keyDownEvent.

модификаторы. Свойство модификаторы возвращает, какая клавиша-модификатор нажата. Некоторыми примерами клавиш-модификаторов являются клавиши Shift, Ctrl или Alt. .

Для получения дополнительной информации см. ключи-модификаторы. раздел документации MDN.

Список событий

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

Событие KeyDown

KeyDownEvent отправляется каждый раз, когда вы нажимаете клавишу на клавиатуре. Нажатая клавиша содержит свойство keyCode для этого события. Если с этим нажатием клавиши связан ввод текста, дополнительные события отправляются для каждого символа ввода текста. Свойство character содержит символ для этих событий.

Когда вы нажимаете и отпускаете a, UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словарь
Toolkit отправляет следующие события:

KeyDownEvent { keyCode=KeyCode.A } KeyDownEvent { character=’a’ } KeyUpEvent { keyCode=KeyCode.A }

Когда вы нажимаете и отпускаете Ctrl+a, UI Toolkit отправляет следующие события:

KeyDownEvent { keyCode=KeyCode.LeftControl, modifiers=EventModifiers.Control } KeyDownEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control } KeyUpEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control } KeyUpEvent { keyCode=KeyCode.LeftControl }

target: визуальный элемент, находящийся в фокусе. Если ни один элемент не имеет фокуса, корневой визуальный элемент панели.

Событие KeyUp

KeyUpEvent отправляется, когда вы отпускаете клавишу на клавиатуре. Свойство keyCode для этого события содержит отпускаемую клавишу. KeyDownEvent имеет дополнительные события, отправляемые, когда нажатие клавиши связано с вводом текста.

Когда вы нажимаете и отпускаете a, UI Toolkit отправляет следующие события:

KeyDownEvent { keyCode=KeyCode.A } KeyDownEvent { character=’a’ } KeyUpEvent { keyCode=KeyCode.A }

Когда вы нажимаете и отпускаете Ctrl+a, UI Toolkit отправляет следующие события:

KeyDownEvent { keyCode=KeyCode.LeftControl, modifiers=EventModifiers.Control } KeyDownEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control } KeyUpEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control } KeyUpEvent { keyCode=KeyCode.LeftControl }

target: визуальный элемент, находящийся в фокусе. Если ни один элемент не имеет фокуса, корневой визуальный элемент панели.

Примеры

В следующем примере кода сообщение выводится на консоль, когда пользователь нажимает клавишу в текстовом поле. В этом примере кода показано срабатывание событий KeyUpEvent и KeyDownEvent.

Чтобы увидеть пример в действии, сделайте следующее:

  1. Создайте GameObjectосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и более. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
    См. в Словарь
    с допустимым UIDocument.
  2. В разделе Ресурсы > Сценарии создайте сценарий C# под названием KeyboardEventTest.
  3. Скопируйте пример в сценарий C#.
  4. Прикрепите сценарий KeyboardEventTest к GameObject с помощью UIDocument
  5. Войдите в режим воспроизведения и введите текстовое поле.
using UnityEngine; using UnityEngine.UIElements; // Add KeyboardEventTest to a GameObject with a valid UIDocument. // When the user presses a key, it will print the keyboard event properties to the console. [RequireComponent(typeof(UIDocument))] public class KeyboardEventTest : MonoBehaviour { void OnEnable() { var root = GetComponent().rootVisualElement; root.Add(new Label("Press any key to see the keyDown properties")); root.Add(new TextField()); root.Q().Focus(); root.RegisterCallback(OnKeyDown, TrickleDown.TrickleDown); root.RegisterCallback(OnKeyUp, TrickleDown.TrickleDown); } void OnKeyDown(KeyDownEvent ev) { Debug.Log("KeyDown:" + ev.keyCode); Debug.Log("KeyDown:" + ev.character); Debug.Log("KeyDown:" + ev.modifiers); } void OnKeyUp(KeyUpEvent ev) { Debug.Log("KeyUp:" + ev.keyCode); Debug.Log("KeyUp:" + ev.character); Debug.Log("KeyUp:" + ev.modifiers); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3