この記事でのバージョン
Unity 2020.3.25f1
はじめに
今回はuGUIの要素のドラッグ開始、最中、終了を検知する方法の紹介です!
また、記事中では以下のアセットを使っています。
Clean & Minimalist GUI Pack | 2D GUI | Unity Asset Store |
uGUIの要素のドラッグ開始、最中、終了を検知する方法
ドラッグを検知するにはEventSystemが配置されている状態で
(uGUIの要素作った時に自動で作成されるやつ)
IBeginDragHandler、IDragHandler、IEndDragHandlerというインタフェースを追加し、
そのメソッドであるOnBeginDrag(ドラッグ開始)、OnDrag(ドラッグの最中)、
OnEndDrag(ドラッグ終了)を実装したスクリプトを
using UnityEngine; using UnityEngine.EventSystems;//IBeginDragHandler, IDragHandler, IEndDragHandlerを使うのに必要 public class DragSample : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { //================================================================================= //更新 //================================================================================= public void OnBeginDrag(PointerEventData eventData) { Debug.Log($"ドラッグ開始"); } public void OnDrag(PointerEventData eventData) { Debug.Log($"ドラッグ中"); } public void OnEndDrag(PointerEventData eventData) { Debug.Log($"ドラッグ終了"); } }
uGUIの要素(今回はImage)に追加するだけです。
これだけでドラックの開始、最中、終了を検知する事が出来ます。
ただし、開始はその要素上でしか検知しませんが
最中と終了は要素の外でも検知してしまう点には注意が必要です。
なお引数のeventDataから
現在のポインタの位置(position)や最後の更新からの移動量(delta)などを取得する事も可能です。