https://docs.unity3d.com/ScriptReference/Event.html
В Unity класс `Event` представляет собой класс для работы с событиями, связанными с пользовательским вводом. Этот класс используется для получения информации о различных типах ввода, таких как нажатия клавиш, движение мыши, клики и другие события, происходящие в игровом окне.
Класс `Event` в Unity используется только в методах [[OnGUI()]] и [[Editor.OnSceneGUI()|OnSceneGUI()]]. Вызов методов класса `Event` вне этих методов может привести к непредсказуемому поведению или ошибкам
Если использовать `Event.current` в [[OnGUI()]], то события будут приходить только, если окно, в котором находится [[OnGUI()]], в фокусе.
Если использовать `Event.current` в [[Editor.OnSceneGUI()|OnSceneGUI()]], то события будут приходить только, если окно сцены ([[Scene View и Game View|Scene View]]) в фокусе.
`Event.current`: Не будет получать события ввода, если окно не в фокусе. Например, если `Event.current` вызывается в методе OnSceneGUI и если нет фокуса на окно сцены (Scene View), то `Event.current` перестает получать события.
Для того чтобы обрабатывать клавиши глобально в редакторе, вне зависимости от фокуса, нужно прибегнуть к нативным API операционной системы или использовать обходные решения. Unity не предоставляет встроенных средств для глобального захвата клавиш на уровне всего редактора.
Класс `Event` является частью [[IMGUI]] в Unity.
> Класс Event ведёт себя очень странно. [[Если зажать клавишу, то Event будет возвращать true лишь раз в какое-то время]]
Конспекты по теме:
- [[currentEvent.isKey и currentEvent.isMouse]]
- [[Проверка на удерживание клавиши через класс Event]]
Пример использования `Event` в методе `OnGUI`:
```csharp
void OnGUI() {
Event e = Event.current;
if (e.type == EventType.MouseDown) {
Debug.Log("Mouse button pressed at position: " + e.mousePosition);
}
}
```
Пример использования `Event` в методе `OnSceneGUI`:
```csharp
void OnSceneGUI() {
Event e = Event.current;
if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Space) {
Debug.Log("Space key pressed");
}
}
```
Эти методы гарантируют, что вы работаете с актуальным событием, что важно для правильного функционирования пользовательского интерфейса и интерактивности в редакторе Unity.