Unityのシンプルなドラッグアンドドロップ(DrapDop)
Unity Simple Drag Drop
バックパック、アイテムがあるとします。アイテムをスロットにドラッグすると、マウスを離した後、アイテムは自動的にバックパックスロットに入ります。 (写真)
まず、UnityのEventSystemsでIBeginDragHandler、IEndDragHandler、IDragHandler、IDropHandler、IPointerDownHandler、IPointerEnterHandler ...などについて学びましょう。
最初にIPointerDownHandlerを見てみましょう
まず、そのようなコードの一部を記述し、記述されたDrapDropクラスをドラッグするコンポーネントにバインドして、クリックコンポーネントを実行します。
using UnityEngine using UnityEngine.EventSystems public class DrapDrop : MonoBehaviour, IPointerDownHandler { public void OnPointerDown(PointerEventData eventData) { Debug.Log('OnPointerDown . Author Nliki .') } }
次に、他のインターフェイスをDrapDropクラスに書き込もうとします。次に、コンポーネントをクリックして移動します。
using UnityEngine using UnityEngine.EventSystems public class DrapDrop : MonoBehaviour, IPointerDownHandler,IBeginDragHandler,IEndDragHandler,IDragHandler { public void OnBeginDrag(PointerEventData eventData) { Debug.Log('OnBeginDrag . Author Nliki .') } public void OnDrag(PointerEventData eventData) { Debug.Log('OnDrag . Author Nliki .') } public void OnEndDrag(PointerEventData eventData) { Debug.Log('OnEndDrag . Author Nliki .') } public void OnPointerDown(PointerEventData eventData) { Debug.Log('OnPointerDown . Author Nliki .') } }
これらのメソッドの機能を理解していると思いますが、ドラッグアンドドロップを実装するだけです。
public class DrapDrop : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { private RectTransform _rectTransform private CanvasGroup _canvasGroup private void Awake() { _rectTransform = gameObject.GetComponent() _canvasGroup = gameObject.GetComponent() } public void OnBeginDrag(PointerEventData eventData) { _canvasGroup.alpha = .6f _canvasGroup.blocksRaycasts = false } public void OnDrag(PointerEventData eventData) { _rectTransform.anchoredPosition += eventData.delta } public void OnEndDrag(PointerEventData eventData) { _canvasGroup.alpha = 1f _canvasGroup.blocksRaycasts = true } }