主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2020/04/18
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 実装でした。