Unity3D :拖放事件
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生.
拖放事件
拖动事件在操作期间发送视觉元素
具有拖放行为。这是一个仅限编辑器的事件。
若要实现拖放功能,请确保可视元素注册特定事件的回调。
支持拖动操作的可视元素分为两种类型:
- 可拖动的视觉元素
- 可放置的视觉元素
您可以选择可拖动的可视元素,将其拖动到可放置的可视元素,然后释放该元素以将其拖放。
所有拖放事件的基类都是 DragAndDropEventBase。
事件 | 描述 | 涓涓细流 | 冒泡 | 可取消 |
---|---|---|---|---|
拖动退出事件 | 拖放过程结束时发送。 | ✔ | ✔ | |
拖动更新事件 | 当拖动的元素移动到放置目标上时发送。 | ✔ | ✔ | ✔ |
拖动执行事件 | 当拖动的元素落到目标上时发送。 | ✔ | ✔ | ✔ |
拖动输入事件 | 当拖动的元素进入新的 .VisualElement | ✔ | ||
拖拽事件 | 当拖动的元素退出当前放置目标时发送。 | ✔ |
使视觉元素可拖动
若要使可视元素可拖动,需要对以下三种事件类型注册回调:
- 指针向下事件
- 指针上事件
- 指针移动事件
对拖动操作使用以下步骤:
- 将其状态设置为“被拖动”。
- 将适当的数据添加到
拖放
中。 - 调用
DragAndDrop.StartDrag()。
- 为拖动操作提供视觉提示。放置区可视元素在收到 或 .
DragPerformEventDragExitedEvent
事件列表
拖动退出事件
当用户将任何可拖动对象拖到可视元素上并释放鼠标指针时,将发送 DragExitedEvent
。当放置区域可视元素收到 时,它需要从拖动操作中删除所有反馈。DragExitedEvent
拖动更新事件
当用户移动可拖动对象时,指针移到可视元素上时,将发送 DragUpdateEvent
。
当放置区域可视元素收到 时,它需要更新放置反馈。例如,您可以移动拖动对象的“重影”,使其停留在鼠标指针下方。DragUpdatedEvent
拖放区域可视元素还应检查拖放属性,并设置为指示拖放
操作的效果。例如,删除操作可以创建新对象、移动现有对象或拒绝放置操作。DragAndDrop.visualMode
拖动执行事件
当用户拖动任何可拖动对象并将鼠标指针释放到可视元素上时,将发送 DragPerformEvent
。仅当可视元素将 DragAndDrop.visualMode
设置为非 或指示它可以接受拖动的对象时,才会发生这种情况。DragAndDropVisualMode.NoneDragAndDropVisualMode.Rejected
当拖放区域可视元素收到 时,它需要对存储在 或 中的拖动对象执行操作。DragPerformEventDragAndDrop.objectReferencesDragAndDrop.pathsDragAndDrop.GetGenericData()
例如,它可能会在用户放置对象的位置添加新的可视元素。
拖动输入事件
当指针在拖动操作期间进入可视元素时,将发送 DragEnterEvent
。
当放置区可视元素收到 时,它需要提供反馈,让用户知道它或其子元素之一是潜在放置操作的目标。例如,可以将 USS 类添加到目标元素,并在鼠标指针下显示拖动对象的“幽灵”。DragEnterEvent
拖拽事件
当用户移动可拖动对象时指针退出可视元素时,将发送 DragLeaveEvent
。
当放置区域可视元素收到 时,它需要停止提供放置反馈。例如,可以删除在目标元素收到 时添加的 USS 类,并且不再显示拖动对象的“重影”。DragLeaveEventDragEnterEvent
例子
- 创建拖放式 UI 以在编辑器窗口之间拖动
由3D建模学习工作室整理翻译,转载请注明出处!