Unity 背景自适应文本内容
效果:
-
先设置Text锚点让他根据父物体拉伸,父物体锚点根据自己需求设置。
-
然后在父物体上挂载脚本
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class AutoSizeText : MonoBehaviour
{
//Text最大宽度
public float maxWidth = 500;
private Text text;//Text和TMP都可以
private RectTransform rectTransform;
void Start()
{
rectTransform = GetComponent<RectTransform>();
text = GetComponentInChildren<Text>();
}
void Update()
{
TextAreaChange();
}
/// <summary>
/// 文本自适应,Text锚点设置为拉伸
/// </summary>
/// <param name="text">文本(Text和TMP都可以)</param>
/// <param name="parent">文本父物体</param>
/// <param name="maxWith">最大宽度(超过这个值扩展高度)</param>
public void TextAreaChange()
{
RectTransform rect = text.rectTransform;
// 获取Text的Size
Vector2 oldSize = rect.rect.size;
Vector2 parentSize = rectTransform.rect.size;
//Text的宽度
float width = text.preferredWidth < maxWidth ? text.preferredWidth : maxWidth;
//父物体的宽度
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, parentSize.x + width - oldSize.x);
//必须先设置宽再设置高
float height = text.preferredHeight;
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, parentSize.y + height - oldSize.y);
}
}
