Text.preferredWidth / Text.preferredHeight : Text的最优宽度/高度,保持当前高度/宽度不变,计算最优宽度/高度

在Text.text赋值字符串后,计算字符串的最优高度或宽度,可动态调整Text尺寸大小

例如,限制Text的最大和最小宽度,自动调整高度:

public class Test : MonoBehaviour
{
    //Text最小/最大宽度
    private int textSizeMinWidth = 100;
    private int textSizeMaxWidth = 500;

    int index = 0;
    private void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            index++;
            Text targetText = GetComponent<Text>();
            string contentStr = "";
            for(int i = 0; i < index; i++)
            {
                contentStr += "测试";
            }
            SetTextSize(targetText,contentStr);
        }
    }

    private void SetTextSize(Text targetText,string contentStr)
    {
        if(targetText == null)
            return;

        targetText.text = contentStr;

        //宽高都不缩放
        if(targetText.preferredWidth <= textSizeMinWidth)
            return;

        //宽度缩放,高度不变
        if(targetText.preferredWidth <= textSizeMaxWidth)
        {
            targetText.rectTransform.sizeDelta = new Vector2(targetText.preferredWidth,targetText.rectTransform.sizeDelta.y);
            return;
        }

        //宽度最大,高度缩放
        //设置最大宽度
        targetText.rectTransform.sizeDelta = new Vector2(textSizeMaxWidth,targetText.rectTransform.sizeDelta.y);
        //设置最优高度
        int textSizeHeight = Mathf.CeilToInt(targetText.preferredHeight);
        targetText.rectTransform.sizeDelta = new Vector2(textSizeMaxWidth,textSizeHeight);
    }
}