Unity根据Text内容设置宽高

半城伤御伤魂 提交于 2020-01-27 01:10:19

开发时免不了动态加载文字,如果只是单独在某个位置显示文字,我们只要根据布局将Text对象的宽高设置为极限值或者设置溢出就可以了。但是在某些情况下这样就不理想了。

例如,此时有个滚动列表(假设有),里面有个Text,内容为
这是一堆文字,具体多少我也不知道,反正就是一堆文字
,由于设置溢出会造成文字的重叠,所以不能设置溢出。出现的情况就会是这样:
在这里插入图片描述

所以必须在动态加载文字的时候手动设置一下Text对象的宽高。这里有两个重要的属性
Text.preferredWidthText.preferredHeight
,分别表示在有足够的空间下,Text被分配的宽度和高度。这里我们是固定宽度,所以只需要Text.preferredHeight属性。上代码:

using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public Text Text;
    
    void Start()
    {
        RectTransform rect = Text.GetComponent<RectTransform>();
        // 获取Text的Size
        Vector2 v2 = rect.rect.size;

        Text.text = "这是一堆文字,具体多少我也不知道,反正就是一堆文字";

        // width保持不变
        rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, v2.x);
        // 动态设置height
        rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, Text.preferredHeight);
    }
}

效果图:
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!