Unity3D :点击事件

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

点击事件

当用户在可视元素上单击鼠标左键(或定点设备上的第一个按钮)时,将发生 ClickEvent。

单击由指针向下事件组成,后跟同一可视元素上的指针向上事件。允许指针在两个事件之间移动,只要向下和向上事件发生在同一个可视元素上。

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

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

事件描述涓涓细流冒泡可取消
点击事件单击鼠标左键时发生。

独特的属性

没有唯一属性,但继承其基类中的所有属性。可以在“指针事件”页上找到属性列表。ClickEvent

事件列表

点击事件

Unity 在视觉元素上单击鼠标左键时发送此事件。

目标:发生单击时鼠标或指针设备下方的元素。

下面的示例在可视元素上注册 :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));
  }
}

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :更改事件 (mvrlink.com)

下一篇:Unity3D :命令事件 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号