События нажатия
ClickEvent происходит, когда пользователь нажимает левую кнопку мыши (или первую кнопку указателя) на VisualElement.
Нажатие состоит из события указателя вниз, за которым следует событие указателя вверх на том же VisualElement. Указатель может перемещаться между двумя событиями, если события вниз и вверх происходят над одним и тем же VisualElement.
Это событие может быть использовано для обнаружения кликов на визуальных элементах, которые не являются кнопками. Например, реализация контроля Toggle использует ClickEvent для отображения или сокрытия флажка, а также для изменения значения контроля.
Базовый класс для ClickEvent является PointerEventBase. Для получения дополнительной информации, пожалуйста, также см. документацию по События указателя.
В следующей таблице описывается событие щелчка и фазы его распространения.
| Мероприятие | Описание | Просыпается | Пузырьки вверх | Аннулируемые |
|---|---|---|---|---|
| ClickEvent | Происходит при нажатии левой кнопки мыши. | Да | Да | Да |
Уникальные свойства
ClickEvent не имеет собственных свойств, но наследует все свойства базового класса. Список свойств см. в События указателя стр.
Список событий
ClickEvent
Unity отправляет это событие при нажатии левой кнопки мыши на визуальный элемент.
target: Элемент под мышью или указательным устройством в момент нажатия.
Следующий пример регистрирует ClickEvent в визуальном элементе:
// In your class, register the callback and pass the root element as user data
btnClose.RegisterCallback<ClickEvent, VisualElement>(OnCloseClicked, root);
private void OnCloseClicked(ClickEvent evt, VisualElement root)
{
root.style.display = DisplayStyle.None;
}
Примеры
В следующем примере показано, как реагировать на ClickEvent на цветном визуальном элементе. При нажатии на элемент его цвет изменится на новый, случайный цвет.
Чтобы посмотреть пример в действии, выполните следующие действия:
- Создайте новый скрипт C# под названием ClickEventExampleWindow.
- Скопируйте примерный код в скрипт C#.
- В окне Окно > UI Toolkit > нажмите Пример События, откройте вновь созданное окно Редактора.
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
public class ClickEventExampleWindow : EditorWindow
{
[MenuItem("Window/UI Toolkit/ClickEventExample")]
public static void ShowExample()
{
var wnd = GetWindow<ClickEventExampleWindow>();
wnd.titleContent = new GUIContent("Click Event Example");
}
public void CreateGUI()
{
// Create a few different colored boxes
for (int i = 0; i < 4; i++)
{
// Create VisualElement with random background color
var newBox = new VisualElement() { style = { flexGrow = 1, backgroundColor = GetRandomColor() } };
rootVisualElement.Add(newBox);
// Register a click event to the visual element to change the background color to a new color
newBox.RegisterCallback<ClickEvent>(OnBoxClicked);
}
}
private void OnBoxClicked(ClickEvent evt)
{
// Only perform this action at the target, not in a parent
if (evt.propagationPhase != PropagationPhase.AtTarget)
return;
// Assign a random new color
var targetBox = evt.target as VisualElement;
targetBox.style.backgroundColor = GetRandomColor();
}
private Color GetRandomColor()
{
return new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
}
}