3using UnityEngine.EventSystems;
5public class UIDragPanel : MonoBehaviour, IPointerDownHandler, IEventSystemHandler, IPointerUpHandler, IDragHandler,
IChangeResolution, IInitializePotentialDragHandler
35 target = base.transform.parent as RectTransform;
46 container = target.parent as RectTransform;
55 if (
enable && data.button == PointerEventData.InputButton.Left)
59 container = target.parent as RectTransform;
69 if (
enable && data.button == PointerEventData.InputButton.Left)
81 ped.useDragThreshold =
false;
84 public void OnDrag(PointerEventData data)
86 if (
enable && data.button == PointerEventData.InputButton.Left && !(
target ==
null) && !(
container ==
null))
88 if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
container, data.position, data.pressEventCamera, out var localPoint))
106 Vector3 localPosition =
target.localPosition;
107 Vector3 vector = container.rect.min -
bound.rect.min;
108 Vector3 vector2 = container.rect.max -
bound.rect.max;
111 localPosition.x = (int)Mathf.Clamp(localPosition.x, vector.x - 20f, vector2.x + 20f);
115 localPosition.y = (int)Mathf.Clamp(localPosition.y, vector.y - 20f, vector2.y + 20f);
117 target.localPosition = localPosition;
void SetTarget(RectTransform r)
void OnChangeResolution()
void OnDrag(PointerEventData data)
Vector3 originalPanelLocalPosition
void OnPointerUp(PointerEventData data)
void OnInitializePotentialDrag(PointerEventData ped)
Vector2 originalLocalPointerPosition
void OnPointerDown(PointerEventData data)