【Unity】ドラッグ&ドロップを実装する方法

unity

Unityでドラッグ&ドロップを実装する方法をご紹介します。

シンプルなコードで実装できますので是非お試しあれ。

まずはドラッグしたいオブジェクトに以下のスクリプトをアタッチする。

sing UnityEngine;
using UnityEngine.EventSystems;

public class DragObj : MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler
{
    private Vector2 prevPos;
    public void OnBeginDrag(PointerEventData eventData)
    {
        // ドラッグ前の位置を記憶しておく
        prevPos = transform.position;
    }

    public void OnDrag(PointerEventData eventData)
    {
        // ドラッグ中は位置を更新する
        transform.position = eventData.position;
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        // ドラッグ前の位置に戻す
        transform.position = prevPos;
    }

}

次にドロップ先のオブジェクトに以下のスクリプトをアタッチする。

using UnityEngine;
using UnityEngine.EventSystems;

public class DropArea : MonoBehaviour,IDropHandler
{
    public void OnDrop(PointerEventData eventData)
    {
        Debug.Log(gameObject.name + "に" + eventData.pointerDrag.name + "がドロップされました。");
    }
}

ゲームを実行してデバッグログが出ればOK。

何が何にドロップされたのか取得できる。

参考:

http://negi-lab.blog.jp/DragAndDrop

https://qiita.com/simanezumi1989/items/8b3c42d7f1c1e59f46fd

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog