Unity 根据文本自适应Text大小
1.单Text组件
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.Scroll View中使用滑动Text
需要将Content下的Text设置为全局改变
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);
}
}