Unity 文字高度自适应
期望
文字有字号限制,输入文字文字后先判断高度是否适用于限制字号,若处于最小字号时高度任不适用,则调整RectTransform 的高度。
核心代码
每次输入文字时先将字号设定为原始字号。
comp.fontSize = fontSize;
comp.text = content;
拓展Text 调用自适应脚本里的设定文字方法。
public static class ExtensionText
{
public static void SetText(this Text text, string content)
{
if (text.GetComponent<AdaptiveText>())
{
text.GetComponent<AdaptiveText>().SetText(content);
}
else
{
text.text = content;
}
}
}
添加LayoutElement 组件用于限制最小高度。
添加ContentSizeFitter 组件用于自适应高度。
判断当前高度是否大于最小高度。
needAdapt = rect.rect.height > element.minHeight;
当前高度大于最小高度,则先调整字号。
currentSize = comp.fontSize;
while (minSize < currentSize)
{
currentSize--;
comp.fontSize = currentSize;
yield return new WaitForEndOfFrame();
if (!needAdapt)
{
break;
}
}