版本:Unity 6 (6000.0)
语言:English
更改事件
命令事件

点击事件

当用户在 VisualElement 上点击鼠标左键(或指向设备上的第一个按钮)时,会发生 ClickEvent

一次点击包括一个指向设备按下事件,随后是在同一个 VisualElement 上的指向设备抬起事件。在两个事件之间,允许指向设备移动,只要按下和抬起事件发生在同一个 VisualElement 上。

此事件可用于检测非按钮 视觉元素视觉树的一个节点,它实例化或派生自 C# VisualElement 类。您可以设置外观样式,定义行为,并将其作为 UI 的一部分显示在屏幕上。 更多信息
参见 术语表
上的点击。例如,Toggle 控件的实现使用 ClickEvent 来显示或隐藏复选标记,并更改控件的值。

ClickEvent 的基类是 PointerEventBase。有关更多信息,另请参阅关于 指针事件 的文档。

事件 描述 向下传递 向上冒泡 可取消
ClickEvent 单击鼠标左键时发生。

唯一属性

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 做出反应。当单击元素时,其颜色将更改为新的随机颜色。

要查看示例的实际效果,请执行以下操作

  1. 创建一个名为 ClickEventExampleWindow 的新 C# 脚本。
  2. 将示例代码复制到 C# 脚本中。
  3. 在**窗口 > UI 工具包 > 点击事件示例**下,打开新创建的编辑器窗口。
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));
  }
}
更改事件
命令事件