Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:unity:textmeshpro

TextMesh Pro

这并不是UGUI原生的一个组件,使用之前需要导入一定的资源,当然功能也比默认的文本更加强大

using TMPro;
 
TextMeshProUGUI m_TextUGUI; // 在UGUI中使用的类应该是这个

脚本接口

自适应大小

访问下面这两个变量:

m_TextUGUI.renderedWidth;
m_TextUGUI.renderedHeight;
  • 但是要注意的是,你不能宽度和高度一起改,因为不可能宽度和高度一起自适应,总有一个是固定的,另一个根据内容变化,才能推导出唯一的最终尺寸
  • 另一个需要注意的是,计算出尺寸后,设置的时候直接设置sizeDelta可能不行,要注意Pivot和Anchor的配合
  • 在刚给控件赋值一个新的字符串之后,上面两个值不会立即刷新,如果需要立即访问就执行:ForceMeshUpdate强制刷新一下

另一种方式是:

void Start()
{
    var kTextUi = GetComponent<TextMeshProUGUI>();
    if (kTextUi != null)
    {
        // 修改内容
        kTextUi.text = "Runtime Update";
 
        // 不一定是UI上原本显示的文本,可以另外指定,按照UI的格式进行计算
        var vSize = kTextUi.GetPreferredValues("JTest");
 
        // 上面的调用有一个问题:文本不会换行,计算的是文本单行排布的PreferredValues
        // 如果需要计算的结果考虑自动换行的话,还需要提供容器的尺寸(根据宽度计算换行)
        // 使用下面的函数调用:
        // Vector2 GetPreferredValues(string text, float width, float height)
 
        Debug.Log($"Real Size = {GetComponent<RectTransform>().sizeDelta}, Preferred Size = {vSize}");
    }
}

解析富文本格式

<color=red>Red Text</color>
/var/www/DokuWikiStick/dokuwiki/data/pages/软件/unity/textmeshpro.txt · Last modified: 2023/05/05 06:35 by zh