拖放事件在视觉元素视觉树的一个节点,它实例化或派生自 C# VisualElement
类。您可以设置外观样式、定义行为,并将其显示在屏幕上作为 UI 的一部分。 更多信息
请参阅 术语表具有拖放行为的操作期间发送。这是一个仅限编辑器的事件。
要实现拖放功能,请确保视觉元素为特定事件注册回调。
支持拖动操作的视觉元素分为两种类型
您可以选择一个可拖动视觉元素,将其拖动到一个可放置视觉元素,然后释放该元素将其放置。
所有拖放事件的基类是 DragAndDropEventBase。
事件 | 描述 | 向下传递 | 向上冒泡 | 可取消 |
---|---|---|---|---|
DragExitedEvent | 拖放过程结束时发送。 | ✔ | ✔ | |
DragUpdatedEvent | 拖动元素移到放置目标上方时发送。 | ✔ | ✔ | ✔ |
DragPerformEvent | 拖动元素放置到目标上时发送。 | ✔ | ✔ | ✔ |
DragEnterEvent | 拖动元素进入新的 VisualElement 时发送。 |
✔ | ||
DragLeaveEvent | 拖动元素退出当前放置目标时发送。 | ✔ |
要使视觉元素可拖动,您需要为以下三种事件类型注册回调
对于拖动操作,请使用以下步骤
DragAndDrop
。DragAndDrop.StartDrag()
。DragPerformEvent
或 DragExitedEvent
时应删除此反馈。当用户将任何可拖动对象拖动到视觉元素上并释放鼠标指针时,将发送 DragExitedEvent
。当放置区域视觉元素收到 DragExitedEvent
时,它需要删除拖动操作的所有反馈。
当指针在用户移动可拖动对象时移到视觉元素上方时,将发送 DragUpdatedEvent
。
当放置区域视觉元素收到 DragUpdatedEvent
时,它需要更新放置反馈。例如,您可以移动拖动对象的“幻影”,使其保持在鼠标指针下方。
放置区域视觉元素还应检查 DragAndDrop
属性并将 DragAndDrop.visualMode
设置为指示放置操作的效果。例如,放置操作可以创建新对象、移动现有对象或拒绝放置操作。
当用户拖动任何可拖动对象并在视觉元素上释放鼠标指针时,将发送 DragPerformEvent
。只有当视觉元素将 DragAndDrop.visualMode
设置为除 DragAndDropVisualMode.None
或 DragAndDropVisualMode.Rejected
之外的其他值以指示它可以接受拖动对象时,才会发生这种情况。
当放置区域视觉元素收到 DragPerformEvent
时,它需要对存储在 DragAndDrop.objectReferences
、DragAndDrop.paths
或 DragAndDrop.GetGenericData()
中的拖动对象进行操作。
例如,它可能会在用户放置对象的位置添加新的视觉元素。
在拖动操作期间,当指针进入视觉元素时,将发送 DragEnterEvent
。
当放置区域视觉元素收到 DragEnterEvent
时,它需要提供反馈,让用户知道它或其子级是潜在放置操作的目标。例如,您可以向目标元素添加 USS 类,并在鼠标指针下显示拖动对象的“幻影”。
当用户移动可拖动对象时,指针退出视觉元素时,将发送 DragLeaveEvent
。
当放置区域视觉元素收到 DragLeaveEvent
时,它需要停止提供放置反馈。例如,您可以删除在目标元素收到 DragEnterEvent
时添加的 USS 类,并且不再显示拖动对象的“幻影”。