ContentSizeFitterMaxWidth.cs 1017 B
using UnityEngine;
using UnityEngine.UI;
[ExecuteAlways]
[RequireComponent(typeof(ContentSizeFitter))]
public class ContentSizeFitterMaxWidth : MonoBehaviour
{
public float maxWidth;
RectTransform _rtfm;
ContentSizeFitter _fitter;
ILayoutElement _layout;
void OnEnable()
{
_rtfm = (RectTransform)transform;
_fitter = GetComponent<ContentSizeFitter>();
_layout = GetComponent<ILayoutElement>();
}
void Update()
{
_fitter.horizontalFit = _layout.preferredWidth > maxWidth
? ContentSizeFitter.FitMode.Unconstrained
: ContentSizeFitter.FitMode.PreferredSize;
if (_layout.preferredWidth > maxWidth)
{
_fitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
_rtfm.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, maxWidth);
}
else
_fitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
}
void OnValidate() => OnEnable();
}