Version: Unity 6.0 (6000.0)
语言 : 中文
更改事件
命令事件

点击事件

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

一次点击操作由在同一 VisualElement 上先发生的指针按下事件和随后发生的指针抬起事件组成。只要按下和抬起事件发生在同一 VisualElement 上,指针就可以在两个事件之间移动。

此事件可用于检测对非按钮的视觉元素的点击。例如,Toggle 控件的实现使用 ClickEvent 来显示或隐藏复选标记,以及更改控件的值。

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

事件 描述 涓滴 冒泡 可取消
ClickEvent 在点击鼠标左键时发生。 ✔ ✔ ✔

独特的属性

ClickEvent 没有独特属性,但继承其基类的所有属性。您可以在 Pointer Events 页面上找到属性列表。

事件列表

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. 在窗口 (Window) > UI 工具箱 (UI Toolkit) > 单击事件示例 (Click Event Example) 下,打开新创建的编辑器 (Editor) 窗口。
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));
  }
}
更改事件
命令事件