当用户在 VisualElement 上点击鼠标左键(或指向设备上的第一个按钮)时,会发生 ClickEvent。
一次点击包括一个指向设备按下事件,随后是在同一个 VisualElement 上的指向设备抬起事件。在两个事件之间,允许指向设备移动,只要按下和抬起事件发生在同一个 VisualElement 上。
此事件可用于检测非按钮 视觉元素视觉树的一个节点,它实例化或派生自 C# VisualElement
类。您可以设置外观样式,定义行为,并将其作为 UI 的一部分显示在屏幕上。 更多信息
参见 术语表 上的点击。例如,Toggle
控件的实现使用 ClickEvent
来显示或隐藏复选标记,并更改控件的值。
ClickEvent
的基类是 PointerEventBase。有关更多信息,另请参阅关于 指针事件 的文档。
事件 | 描述 | 向下传递 | 向上冒泡 | 可取消 |
---|---|---|---|---|
ClickEvent | 单击鼠标左键时发生。 | ✔ | ✔ | ✔ |
ClickEvent
没有唯一属性,但继承了其基类中的所有属性。您可以在 指针事件 页面上找到属性列表。
当鼠标左键在视觉元素上单击时,Unity 会发送此事件。
target
:单击发生时鼠标或指向设备下方的元素。
以下示例注册了视觉元素上的 ClickEvent
btnClose.RegisterCallback<ClickEvent, VisualElement>(Clicked, asset); // asset is the root visual element that will be closed
private void Clicked(ClickEvent evt, VisualElement root)
{
root.ShowVisualElement(false);
}
以下示例演示了如何对彩色视觉元素上的 ClickEvent 做出反应。当单击元素时,其颜色将更改为新的随机颜色。
要查看示例的实际效果,请执行以下操作
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));
}
}