1. 代码
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class UIDragZoom : MonoBehaviour, IDragHandler, IScrollHandler
{
private Vector2 originalSize;
private Vector2 originalPosition;
private RectTransform rectTransform;
private float minSize = 30f;
private float maxSize = 200f;
private void Start()
{
rectTransform = GetComponent<RectTransform>();
originalSize = rectTransform.sizeDelta;
originalPosition = rectTransform.anchoredPosition;
}
public void OnDrag(PointerEventData eventData)
{
rectTransform.anchoredPosition += eventData.delta;
}
public void OnScroll(PointerEventData eventData)
{
float scroll = eventData.scrollDelta.y;
Vector2 newSize = rectTransform.sizeDelta + Vector2.one * scroll;
float temp = Mathf.Clamp(newSize.x, minSize, maxSize);
newSize = new Vector2(temp, temp);
rectTransform.sizeDelta = newSize;
}
public void ResetUI()
{
rectTransform.sizeDelta = originalSize;
rectTransform.anchoredPosition = originalPosition;
}
}
2. 测试场景