UnityのOnDropイベントに関して。
Unityのバージョンは2019.2.5f1 Personalです。
以下のように作ったのですが、思ったような動作を実装できません。
ButtonオブジェクトをCreateから作り、そこに以下のコードを付けました。
C#
1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.EventSystems; 4using UnityEngine.UI; 5 6// Imageコンポーネントを必要とする 7[RequireComponent(typeof(Image))] 8 9// ドラッグとドロップに関するインターフェースを実装する 10public class Drag2 : MonoBehaviour, IDragHandler 11{ 12 13 14 public void OnDrag(PointerEventData eventData) 15 { 16 // ドラッグ中は位置を更新する 17 transform.position = eventData.position; 18 } 19 20}
次にImageオブジェクトを作り、以下のコードをアタッチしました。
C#
1using UnityEngine; 2using UnityEngine.EventSystems; 3//ドロップされるエリアにつけるスクリプト 4public class DropField : MonoBehaviour, IDropHandler 5{ 6 7 public void OnDrop(PointerEventData eventData) 8 { 9 10 //ドロップしているオブジェクトを取得 11 GameObject go = eventData.selectedObject; 12 print("ondrop go:" + go ); 13 14 // もし ドロップするオブジェクトの上なら、親に設定する。 15 if (go.GetComponent<Drag2>() != null) 16 { 17 go.transform.position = transform.position; 18 go.transform.SetParent(transform, true);//ドロップするオブジェクトの数値を変更しない 19 20 } 21 22 } 23} 24
ドラッグしたImageオブジェクトに、持ってきたButtonオブジェクトが子になるようにプログラムしたつもりです。
実行して、ドラッグ&ドロップすることで、画面上は吸着したように見えますが、ヒエラルキーを見てみると、親子関係が成っておらず、ヒエラルキービューを触ることで何故か親子関係が反映されるようになります。
さらに、Imageオブジェクトを複製して実行すると、二回目以降のドラッグ&ドロップができません。(print関数で調べると、二回目以降のOnDropイベントが起動していないみたいです)
これは仕様ですか?それともコードや使い方に何か間違いがあるでしょうか?
回答よろしくお願いします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。