Version: 2021.1
言語: 日本語
コマンドイベント
レイアウトイベント

ドラッグアンドドロップイベント

ドラッグイベントは、ビジュアル要素がドラッグアンドドロップの動作を行う際に送られます。これはエディター専用のイベントです。

ドラッグアンドドロップ機能を実装するには、ビジュアル要素に特定のイベントに対するコールバックを登録する必要があります。

ドラッグ操作をサポートするビジュアル要素は、2 つのタイプに分かれます。

  • ドラッグ可能なビジュアル要素
  • ドロップ可能なビジュアル要素

ドラッグ可能なビジュアル要素を選択し、ドロップ可能なビジュアル要素へドラッグし、要素を離してドロップします。

すべてのドラッグアンドドロップイベントの基本クラスは DragAndDropEventBase です。

イベント 説明  下降伝播 上昇伝播 キャンセル可能
DragExitedEvent ドラッグアンドドロッププロセスの終了時に送信されます。
DragUpdatedEvent ドラッグされた要素がドロップするターゲットの上に移動するときに送信されます。
DragPerformEvent ドラッグされた要素をターゲットにドロップするときに送信されます。
DragEnterEvent ドラッグされた要素が新しい VisualElement に入るとき送信されます。
DragLeaveEvent ドラッグされた要素が現在のドロップするターゲットを離れるときに送信されます。

ビジュアル要素をドラッグ可能にする

ビジュアル要素をドラッグ可能にするには、以下の 3 つのイベントタイプでコールバックを登録する必要があります。

以下の手順で、ドラッグ操作を行います。

  1. 状態を “ドラッグ中” に設定します。
  2. DragAndDrop に適切なデータを加えます。
  3. DragAndDrop.StartDrag() を呼び出します。
  4. ドラッグ操作に視覚的な手がかりを与えます。ドロップエリアのビジュアル要素は、 DragPerformEvent または DragExitedEvent を受信すると、このフィードバックを削除する必要があります。

イベントリスト

DragExitedEvent

DragExitedEvent は、ユーザーが任意のドラッグ可能なオブジェクトをビジュアル要素の上にドラッグし、マウスポインターを離すときに送信されます。ドロップエリアのビジュアル要素が DragExitedEvent を受信するときに、ドラッグ操作によるすべてのフィードバックを取り除く必要があります。

DragUpdatedEvent

DragUpdatedEvent は、ユーザーがドラッグ可能なオブジェクトをドラッグする際に、そのポインターがビジュアル要素に重なるときに送信されます。

ドロップエリアのビジュアル要素が、DragUpdatedEvent を受信すると、ドロップフィードバックを更新する必要があります。例えば、ドラッグしたオブジェクトの “ゴースト” を移動して、マウスポインターの下に留まるようにします。

ドロップエリアのビジュアル要素は DragAndDrop プロパティを確認して DragAndDrop.visualMode を設定し、ドロップ操作の効果を示します。例えば、ドロップ操作では、新しいオブジェクトの作成、既存のオブジェクトの移動、ドロップ操作の拒否などが可能です。

DragPerformEvent

DragPerformEvent は、ユーザーがドラッグ可能なオブジェクトをドラッグし、ビジュアル要素の上でマウスポインターを離すときに送信されます。これは、ビジュアル要素が DragAndDrop.visualModeDragAndDropVisualMode.NoneDragAndDropVisualMode.Rejected 以外のものに設定して、ドラッグしたオブジェクトが受け入れ可能であることを示す場合にのみ発生します。

ドロップエリアのビジュアル要素が DragPerformEvent を受信する場合、DragAndDrop.objectReferencesDragAndDrop.pathsDragAndDrop.GetGenericData() のいずれかに保存されているドラックされたオブジェクト上で適切なアクションを行う必要があります。

例えば、ユーザーがオブジェクトをドロップした場所に新しいビジュアル要素を加える場合があります。

DragEnterEvent

DragEnterEvent は、ドラッグ操作中にポインターがビジュアル要素に入ると送信されます。

ドロップエリアのビジュアル要素が DragEnterEvent を取得すると、フィードバックを提供して、その要素、またはその子の 1 つが可能なドロップ操作のターゲットであることをユーザーに知らせる必要があります。例えば、USS クラスをターゲット要素に追加し、マウスポインターの下にドラッグされたオブジェクトの “ゴースト” を表示することができます。

DragLeaveEvent

DragLeaveEvent は、ユーザーがドラッグ可能なオブジェクトをドラッグして、ポインターがビジュアル要素を離れるときに送信されます。

ドロップエリアのビジュアル要素が DragLeaveEvent を取得するとき、ドロップフィードバックの提供を停止する必要があります。例えば、ターゲット要素が DragEnterEvent を受信したときに加えた USS クラスを削除して、ドラッグされたオブジェクトの “ゴースト” を表示しなくすることができます。

コマンドイベント
レイアウトイベント