使用UGUI制作界面的时候,经常有使用ContentSizeFitter组件来让父对象适应所有子对象的总大小的情况,而有时候会有需求说,父对象达到某个最大尺寸后,就固定这个大小不再增长了,就是说有个最大尺寸的限制,这要怎么实现呢?话不多说,上代码:
文件:ClampedContentSizeFitter.cs
using UnityEngine;
using UnityEngine.UI;
namespace ZetanStudio.UI
{
public class ClampedContentSizeFitter : ContentSizeFitter
{
#pragma warning disable IDE1006 // 命名样式
[SerializeField] private float m_MaxWidth = -1;
public float maxWdith { get => m_MaxWidth; set { m_MaxWidth = value; SetDirty(); } }
[SerializeField] private float m_MaxHeight = -1;
public float maxHeight { get => m_MaxHeight; set { m_MaxHeight = value; SetDirty(); } }
[System.NonSerialized] private RectTransform m_Rect;
private RectTransform rectTransform
{
get
{
if (m_Rect == null)
m_Rect