Drag events are sent during operations where visual elements have drag-and-drop behavior. This is an Editor-only event.
To implement drag-and-drop functionality, make sure that visual elements register callbacks for specific events.
드래그 작업을 지원하는 시각적 요소는 다음 두 가지 타입으로 분리됩니다.
드래그 가능한 시각적 요소를 선택하여 드롭 가능한 시각적 요소로 드래그하고, 요소를 놓아 드롭할 수 있습니다.
The base class for all drag-and-drop events is DragAndDropEventBase.
| 이벤트 | 설명 | 트리클다운 | 버블업 | 취소 가능 |
|---|---|---|---|---|
| DragExitedEvent | Sent when the drag-and-drop process ends. | ✔ | ✔ | |
| 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 클래스를 제거하고 드래그한 오브젝트의 “고스트”를 더 이상 표시하지 않을 수 있습니다.