Unity

[Unity] UI 마우스 Drag로 UI 이동 방법

usingsystem 2023. 10. 27. 17:58
728x90

Panel클릭시 UI Drag 소개합니다.

우선 아래와 같이 패널하나를 추가합니다.

만들어둔 Panel안에 컴포넌트로 cs파일을 추가합니다. 저는 cs 파일이름을 UI_DragPanel로 정의 했습니다.

 

UI_DragPanel.cs 정의

1. IBeginDragHandler, IDragHandler을 사용하여 구현 방법

IBeginDragHandler -  UI 요소, 예를 들어 버튼이나 이미지와 같은 UI 구성 요소나 객체와 상호 작용할 때 드래그 작업이 시작되었을 때를 감지하고 응답하는 데 사용됩니다.

IDragHandler - IDragHandler는 UI 요소의 드래그 작업 중에 이벤트를 감지하고 응답하기 위한 인터페이스입니다. 드래그 작업 중에 UI 요소가 이동하거나 다른 동작을 수행하는 등의 상호 작용을 처리하는 데 사용됩니다.

using UnityEngine;
using UnityEngine.EventSystems;

public class UI_DragPanel : MonoBehaviour, IDragHandler, IBeginDragHandler
{
     Vector2 _moveBegin;
     Vector2 _startingPoint;

    public void OnBeginDrag(PointerEventData eventData)
    {
        _moveBegin = eventData.position;
        _startingPoint = this.transform.position;
    }
    public void OnDrag(PointerEventData eventData)
    {
        Vector2 moveOffset = eventData.position - _moveBegin;
        this.transform.position = _startingPoint + moveOffset;
    }
}

2. IDragHandler만 사용 

using UnityEngine;
using UnityEngine.EventSystems;

public class UI_DragPanel : MonoBehaviour, IDragHandler
{
    RectTransform m_transform = null;
    void Start()
    {
        m_transform = GetComponent<RectTransform>();
    }
    public void OnDrag(PointerEventData eventData)
    {
        m_transform.position += new Vector3(eventData.delta.x, eventData.delta.y);
    }
}
728x90