この記事でのバージョン
Unity 2019.4.17f1
はじめに
今回はアセット(ファイル)をドラック&ドロップで取得するエディタ拡張を作ってみた話です!
ちなみに以前、
Inspectorにファイルをドラック&ドロップしてパスを設定するという記事も書いていました。
アセット(ファイル)をドラック&ドロップで取得するエディタ拡張
まずUnityにはUnityEditor上で行われるドラッグ&ドロップを操作するクラスDragAndDrop
というものがあり、そのobjectReferencesで現在ドラッグされている物を参照出来ます。
//現在ドラッグされている物を取得
Object[] objectReferences = DragAndDrop.objectReferences
なので後はドラック&ドロップするためのエリアを描画して、
そのエリア内にマウスカーソルがある時だけドラッグ&ドロップの処理をすればいいだけという事です。
今回はそこら辺の処理をまとめて、
簡単にドラック&ドロップでオブジェクトを取得するGUIを表示するクラス
DragAndDropAreaUtilityを作ってみました!
具体的には以下のような感じで使います。
//使いまわし用 private readonly List<AudioClip> _audioClips = new List<AudioClip>(); //================================================================================= //表示するGUIの設定 //================================================================================= private void OnGUI() { //Sprite単体を取得するエリア表示 var sprite = DragAndDropAreaUtility.GetObject<Sprite>("Sprite単体を取得するエリア"); if (sprite != null) { Debug.Log($"Spriteの{sprite.name}を取得"); } GUILayout.Space(30); //AudioClipを複数を取得するエリア表示 if (DragAndDropAreaUtility.GetObjects(_audioClips, "AudioClipを複数を取得するエリア")) { foreach (var audioClip in _audioClips) { Debug.Log($"AudioClipの{audioClip.name}を取得"); } _audioClips.Clear(); } }