[Unity] UI드래그로 이동 시킬 때 범위 제한Unity/UI2022. 8. 29. 16:16
Table of Contents
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UnitContent : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler
{
// 부모 그리드 레이아웃 그룹
[SerializeField]private GridLayoutGroup parentGroup;
// 드래그 제한 범위
[SerializeField] private RectTransform dragArea;
private PointerEventData currentEventData;
public void OnBeginDrag(PointerEventData eventData)
{
currentEventData = eventData;
}
public void OnDrag(PointerEventData eventData)
{
Vector2 localPointPos = dragArea.InverseTransformPoint(eventData.position);
if(dragArea.rect.Contains(localPointPos))
{
transform.position = eventData.position;
}
else if (dragArea.rect.Contains(new Vector2(dragArea.rect.center.x, localPointPos.y)))
{
transform.position = new Vector2(transform.position.x, eventData.position.y);
}
else if (dragArea.rect.Contains(new Vector2(localPointPos.x, dragArea.rect.center.y)))
{
transform.position = new Vector2(eventData.position.x, transform.position.y);
}
}
public void OnEndDrag(PointerEventData eventData)
{
// 부모 레이아웃 그룹 재정렬
parentGroup.SetLayoutVertical();
parentGroup.SetLayoutHorizontal();
}
}
'Unity > UI' 카테고리의 다른 글
[Unity] UI 롱 클릭 이벤트 처리 with UniRx (0) | 2024.06.11 |
---|---|
[Unity] Button을 상속받아 커스텀하기 (0) | 2023.03.09 |
[Unity] 마우스(포인터)가 UI위에 있는지 확인하기 (0) | 2022.05.11 |
[Unity] UI 클릭, 드래그이벤트 여러오브젝트 동시 처리 (0) | 2022.04.14 |
[Unity] 자이로스코프 Parallax 이펙트 (0) | 2022.03.22 |