Unity adapts Text size according to text
1. Single Text component
using UnityEngine;
using UnityEngine.UI;
public class AutoTextSize : MonoBehaviour
{
//固定Width 改变Height
public void AutoChangeHeight(Text text)
{
RectTransform rect = text.GetComponent<RectTransform>();
Vector2 v2 = rect.rect.size;
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, v2.x);
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, text.preferredHeight);
}
//固定Height 改变Width
public void AutoChangeWidth(Text text)
{
RectTransform rect = text.GetComponent<RectTransform>();
Vector2 v2 = rect.rect.size;
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, v2.y);
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, text.preferredWidth);
}
}
2. Use sliding Text in Scroll View
It is necessary to set the Text under Content as a global change
using UnityEngine;
using UnityEngine.UI;
public class AutoTextSize : MonoBehaviour
{
//Scroll View Content
[SerializeField]
private RectTransform rect_Content;
//固定Width 改变Height
public void AutoChangeHeight(Text text)
{
Vector2 v2 = rect_Content.rect.size;
rect_Content.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, v2.x);
rect_Content.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,text.preferredHeight);
}
//固定Height 改变Height
public void AutoChangeWidth(Text text)
{
Vector2 v2 = rect_Content.rect.size;
rect_Content.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, v2.y);
rect_Content.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, text.preferredWidth);
}
}