using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; [ExecuteAlways] public class LayoutElementSizeClamp : LayoutElement { [SerializeField] bool m_ClampEnable; public bool clampEnable { get { return m_ClampEnable; } set { m_ClampEnable = value; } } [SerializeField] Clamp m_Clamp; public Clamp clamp { get { return m_Clamp; } } [SerializeField] RectTransform m_Target; Vector2 targetSizeRef = Vector2.zero; private void LateUpdate() { if (clampEnable && m_Target != null) { if (targetSizeRef != m_Target.sizeDelta) { preferredHeight = Mathf.Clamp(m_Target.rect.height, m_Clamp.minY, m_Clamp.maxY); preferredWidth = Mathf.Clamp(m_Target.rect.width, m_Clamp.minX, m_Clamp.maxX); targetSizeRef = new Vector2(preferredWidth, preferredHeight); } } } [System.Serializable] public struct Clamp { public float minX; public float maxX; public float minY; public float maxY; } }