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));
  }
}
更改事件
命令事件