FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その2 

    こんにちは。坂内っす。

    寒い日が続きますね。
    タイトル通り、いまだに口内一部が痛いっす。

    さて、前回の続きでUnityでのドラッグアンドドロップの話です。
    前回はこちら”【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その1

    前回はドラッグ側の処理を書きました。
    今回はドラッグされる側、以下スクショで言うと、上側にある白い四角の方の処理です。

    こんなコードを上の白い四角それぞれにつけます。

    DropTarget.cs
    using System.Collections;
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;

    public class DropTarget : MonoBehaviour, IDropHandler {
    public GameObject Item {
    get {
    if (transform.childCount > 0) {
    return transform.GetChild(0).gameObject;
    }
    return null;
    }
    }

    public void OnDrop(PointerEventData eventData) {
    if (Item == null) {
    // 何もないところへドラッグ
    DragObject.dragObject.GetComponent().color = new Color(1f,1f,1f,0f);
    DragObject.dragObject.transform.SetParent(transform);
    } else {
    // すでに何かあるところへドラッグ>入れ替え
    // 元々あったものを元へ戻す処理
    Item.GetComponent().color = new Color(1f,1f,1f,1f);
    Item.transform.SetParent(Item.GetComponent().parentTransform);
    // 新しくドラッグされてきたオブジェクトの処理
    DragObject.dragObject.GetComponent().color = new Color(1f,1f,1f,0f);
    DragObject.dragObject.transform.SetParent(transform);
    }
    }
    }


    ※動きはクリックしてみてね!

    こんな感じの動きになります。

    ドラッグアンドドロップなので、ドロップしたら白い絵を変えるとかの処理にすれば、それっぽい感じになるかと思いますよ!
    Hierarchyの動きを見ると分かると思うのですが、ドラッグしたアイテムは上のオブジェクトの子供になる感じになってます。
    ただ、今のままだとドラッグされたオブジェクトの文字色を透明にしてるだけで、位置とか調整していないので、変に触れちゃったりします。
    その辺はRaycast Targetいじって触れなくしたりとか、お好きに手いれてね!

    先週のと合わせれば、これでドラッグアンドドロップが簡単に実装できます!

    ってところで、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/381-3602c929
    この記事にトラックバックする(FC2ブログユーザー)