Version: Unity 6.0 (6000.0)
语言 : 中文
命令事件
布局事件

拖放事件

在视觉元素具有拖放行为的操作期间,会发送拖动事件。该事件只能在 Editor 中使用。

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

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

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

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

所有拖放事件的基类都是 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 类并不再显示拖动对象的“虚影”。

示例

命令事件
布局事件