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 } }