VRChat でいろいろやっている影響もあって Unity を最近よくいじっているのですが、
大量のオブジェクトの操作をやりたくなったので、エディター拡張を作りました。
ただ、私の知る限り一括で Object を設定できるコントロールは無かった気がしたので、
ドラッグ&ドロップで全てを受け入れてくれるように組んでみたので、そのログです。
調べてみると、なんとそれ用のクラスが用意されていました。
UnityEditor.DragAndDrop - Unity スクリプトリファレンス
ということで、これを使って実装していきます。
まず、初めに D&D を受け入れる Box を作成します。
var area = GUILayoutUtility.GetRect(0.0f, 50.0f, GUILayout.ExpandWidth(true)); GUI.Box(area, "Drag and Drop RectTransforms");
次に Box の中へとドロップしようとしていたら受け入れる...という部分を作ります。
if (area.Contains(Event.current.mousePosition)) { switch (Event.current.type) { case EventType.DragUpdated: DragAndDrop.visualMode = DragAndDropVisualMode.Copy; Event.current.Use(); break; case EventType.DragPerform: DragAndDrop.AcceptDrag(); var references = DragAndDrop.objectReferences; DragAndDrop.activeControlID = 0; Event.current.Use(); break; } }
これで、枠内に D&D したオブジェクトが references
にはいります。
ということで、エディター拡張での D&D 実装でした。