版本:Unity 6 (6000.0)
语言:English
命令事件
布局事件

拖放事件

拖放事件在视觉元素视觉树的一个节点,它实例化或派生自 C# VisualElement 类。您可以设置外观样式、定义行为,并将其显示在屏幕上作为 UI 的一部分。 更多信息
请参阅 术语表
具有拖放行为的操作期间发送。这是一个仅限编辑器的事件。

要实现拖放功能,请确保视觉元素为特定事件注册回调。

支持拖动操作的视觉元素分为两种类型

  • 可拖动视觉元素
  • 可放置视觉元素

您可以选择一个可拖动视觉元素,将其拖动到一个可放置视觉元素,然后释放该元素将其放置。

所有拖放事件的基类是 DragAndDropEventBase

事件 描述 向下传递 向上冒泡 可取消
DragExitedEvent 拖放过程结束时发送。
DragUpdatedEvent 拖动元素移到放置目标上方时发送。
DragPerformEvent 拖动元素放置到目标上时发送。
DragEnterEvent 拖动元素进入新的 VisualElement 时发送。
DragLeaveEvent 拖动元素退出当前放置目标时发送。

使视觉元素可拖动

要使视觉元素可拖动,您需要为以下三种事件类型注册回调

对于拖动操作,请使用以下步骤

  1. 将其状态设置为“正在拖动”。
  2. 将适当的数据添加到 DragAndDrop
  3. 调用 DragAndDrop.StartDrag()
  4. 为拖动操作提供视觉提示。放置区域视觉元素在收到 DragPerformEventDragExitedEvent 时应删除此反馈。

事件列表

DragExitedEvent

当用户将任何可拖动对象拖动到视觉元素上并释放鼠标指针时,将发送 DragExitedEvent。当放置区域视觉元素收到 DragExitedEvent 时,它需要删除拖动操作的所有反馈。

DragUpdatedEvent

当指针在用户移动可拖动对象时移到视觉元素上方时,将发送 DragUpdatedEvent

当放置区域视觉元素收到 DragUpdatedEvent 时,它需要更新放置反馈。例如,您可以移动拖动对象的“幻影”,使其保持在鼠标指针下方。

放置区域视觉元素还应检查 DragAndDrop 属性并将 DragAndDrop.visualMode 设置为指示放置操作的效果。例如,放置操作可以创建新对象、移动现有对象或拒绝放置操作。

DragPerformEvent

当用户拖动任何可拖动对象并在视觉元素上释放鼠标指针时,将发送 DragPerformEvent。只有当视觉元素将 DragAndDrop.visualMode 设置为除 DragAndDropVisualMode.NoneDragAndDropVisualMode.Rejected 之外的其他值以指示它可以接受拖动对象时,才会发生这种情况。

当放置区域视觉元素收到 DragPerformEvent 时,它需要对存储在 DragAndDrop.objectReferencesDragAndDrop.pathsDragAndDrop.GetGenericData() 中的拖动对象进行操作。

例如,它可能会在用户放置对象的位置添加新的视觉元素。

DragEnterEvent

在拖动操作期间,当指针进入视觉元素时,将发送 DragEnterEvent

当放置区域视觉元素收到 DragEnterEvent 时,它需要提供反馈,让用户知道它或其子级是潜在放置操作的目标。例如,您可以向目标元素添加 USS 类,并在鼠标指针下显示拖动对象的“幻影”。

DragLeaveEvent

当用户移动可拖动对象时,指针退出视觉元素时,将发送 DragLeaveEvent

当放置区域视觉元素收到 DragLeaveEvent 时,它需要停止提供放置反馈。例如,您可以删除在目标元素收到 DragEnterEvent 时添加的 USS 类,并且不再显示拖动对象的“幻影”。

示例

命令事件
布局事件