События перетаскивания отправляются во время операций, когда визуальные элементы имеют поведение перетаскивания. Это мероприятие предназначено только для редактора.
Чтобы реализовать функцию перетаскивания, убедитесь, что визуальные элементы регистрируют обратные вызовы для определенных событий.
Визуальные элементы, поддерживающие операции перетаскивания, делятся на два типа:
- Перетаскиваемые визуальные элементы
- Выпадающие визуальные элементы
Можно выбрать перетаскиваемый визуальный элемент, перетащить его на перетаскиваемый визуальный элемент и отпустить элемент, чтобы отбросить его.
Базовым классом для всех событий перетаскивания является DragAndDropEventBase.
Событие | Описание | Стекает вниз | Пузыри вверх | Отменяемый |
---|---|---|---|---|
DragExitedEvent | Отправляется, когда заканчивается процесс перетаскивания. | ✔ | ✔ | |
DragUpdatedEvent | Отправляется, когда перетаскиваемый элемент перемещается над целью перетаскивания. | ✔ | ✔ | ✔ |
DragPerformEvent | Отправляется, когда перетаскиваемый элемент падает на цель. | ✔ | ✔ | ✔ |
DragEnterEvent | Отправляется, когда перетаскиваемый элемент входит в новый VisualElement . |
✔ | ||
DragLeaveEvent | Отправляется, когда перетаскиваемый элемент покидает текущую цель перетаскивания. | ✔ |
Визуальные элементы можно перетаскивать
Чтобы сделать визуальный элемент перетаскиваемым, необходимо зарегистрировать обратные вызовы для следующих трех типов событий:
Выполните следующие шаги для операции перетаскивания:
- Установите для него состояние "перетаскивание".
- Добавьте соответствующие данные в
DragAndDrop
. - Вызов
DragAndDrop.StartDrag()
. - Предоставьте визуальную подсказку к операции перетаскивания. Визуальный элемент области перетаскивания должен удалять эту обратную связь при получении
DragPerformEvent
илиDragExitedEvent
.
Список событий
DragExitedEvent
Событие DragExitedEvent
отправляется, когда пользователь перетаскивает любой перетаскиваемый объект на визуальный элемент и отпускает указатель мыши. Когда визуальный элемент области перетаскивания получает DragExitedEvent
, он должен удалить все отклики от операций перетаскивания.
Событие перетаскивания
Событие DragUpdatedEvent
отправляется, когда указатель перемещается по визуальному элементу при перемещении пользователя. перетаскиваемый объект.
Когда визуальный элемент области перетаскивания получает DragUpdatedEvent
, ему необходимо обновить отзыв о перетаскивании. Например, вы можете переместить «призрак» перетаскиваемого объекта так, чтобы он оставался под указателем мыши.
Визуальный элемент области перетаскивания также должен проверять свойства DragAndDrop
и устанавливать DragAndDrop.visualMode
, чтобы указать эффект операции перетаскивания. Например, операция перетаскивания может создать новый объект, переместить существующий объект или отклонить операцию перетаскивания.
Событие DragPerform
Событие DragPerformEvent
отправляется, когда пользователь перетаскивает любой перетаскиваемый объект и отпускает указатель мыши. над визуальным элементом. Это происходит только в том случае, если визуальный элемент устанавливает для DragAndDrop.visualMode
значение, отличное от DragAndDropVisualMode.None
или DragAndDropVisualMode.Rejected
, чтобы указать, что он может принимать перетаскиваемые объекты.
Когда визуальный элемент области перетаскивания получает DragPerformEvent
, он должен воздействовать на перетаскиваемые объекты, хранящиеся в DragAndDrop.objectReferences
. , DragAndDrop.paths
или DragAndDrop.GetGenericData()
.
Например, он может добавить новые визуальные элементы в то место, куда пользователь опускает объекты.
Событие перетаскивания
Событие DragEnterEvent
отправляется, когда указатель входит в визуальный элемент во время операции перетаскивания.
Когда визуальный элемент области перетаскивания получает событие DragEnterEvent
, он должен предоставить обратную связь, позволяющую пользователю узнать, что он или один из его дочерних элементов является мишенью для потенциального операция сброса. Например, вы можете добавить класс USS к целевому элементу и отобразить «призрак» перетаскиваемого объекта под указателем мыши.
Событие перетаскивания
Событие DragLeaveEvent
отправляется, когда указатель покидает визуальный элемент, когда пользователь перемещает перетаскиваемый объект.
Когда визуальный элемент области перетаскивания получает DragLeaveEvent
, он должен перестать обеспечивать обратную связь. Например, вы можете удалить класс USS, который вы добавили, когда целевой элемент получил DragEnterEvent
, и больше не отображать «призрак» перетаскиваемого объекта.