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