1. 程式人生 > 其它 >【Unity】UGUI動態適配Text尺寸大小

【Unity】UGUI動態適配Text尺寸大小

技術標籤:UGUI

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);
    }
}