using UnityEngine; using UnityEngine.EventSystems; public class DragSize : MonoBehaviour, IDragHandler { public enum Mode { Height,Width,Left,Right} public Mode mode; public float MinSize =85f; public float MaxSize =850f; private float NewSize; private RectTransform panelRectTransform; void Start() { panelRectTransform = transform.parent as RectTransform; } public void OnDrag(PointerEventData data) { if (Input.GetMouseButton(0)) { if (panelRectTransform == null) return; if (NewSize < MinSize) NewSize = MinSize; if (NewSize > MaxSize) NewSize = MaxSize; switch (mode) { case Mode.Width: break; case Mode.Height: NewSize = Input.mousePosition.y; if (NewSize < MinSize) NewSize = MinSize; if (NewSize > MaxSize) NewSize = MaxSize; panelRectTransform.sizeDelta = new Vector2(panelRectTransform.sizeDelta.x, NewSize); break; case Mode.Left: NewSize = Input.mousePosition.x ; if (NewSize < MinSize) NewSize = MinSize; if (NewSize > MaxSize) NewSize = MaxSize; panelRectTransform.offsetMin = new Vector2(NewSize, panelRectTransform.offsetMin.y); break; case Mode.Right: NewSize = Input.mousePosition.x - Screen.width; if (NewSize < MinSize) NewSize = MinSize; if (NewSize > MaxSize) NewSize = MaxSize; panelRectTransform.offsetMax = new Vector2(NewSize, panelRectTransform.offsetMax.y); break; } } } }