Unity3D :拖放事件

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

拖放事件

拖动事件在操作期间发送视觉元素
具有拖放行为。这是一个仅限编辑器的事件。

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

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

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

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

所有拖放事件的基类都是 DragAndDropEventBase。

事件描述涓涓细流冒泡可取消
拖动退出事件拖放过程结束时发送。
拖动更新事件当拖动的元素移动到放置目标上时发送。
拖动执行事件当拖动的元素落到目标上时发送。
拖动输入事件当拖动的元素进入新的 .VisualElement
拖拽事件当拖动的元素退出当前放置目标时发送。

使视觉元素可拖动

若要使可视元素可拖动,需要对以下三种事件类型注册回调:

  • 指针向下事件
  • 指针上事件
  • 指针移动事件

对拖动操作使用以下步骤:

  1. 将其状态设置为“被拖动”。
  2. 将适当的数据添加到拖放中。
  3. 调用 DragAndDrop.StartDrag()。
  4. 为拖动操作提供视觉提示。放置区可视元素在收到 或 .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建模学习工作室整理翻译,转载请注明出处!

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

下一篇:Unity3D :布局事件 (mvrlink.com)

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