You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取TextMeshPro UI文本控件包含自动换行的实际显示行数?

TextMeshPro UGUI 控件获取实际显示行数解决方案

你之前使用Split('\n')统计行数的方案仅能识别手动插入的硬换行符,无法统计因宽度限制触发的自动换行行数,直接使用TextMeshPro内置的textInfo属性即可拿到包含所有换行类型的实际总显示行数。

核心实现代码

public TextMeshProUGUI commentaryText;

// 建议放在LateUpdate中调用,确保文本布局已完成更新
void LateUpdate()
{
    int actualDisplayLines = commentaryText.textInfo.lineCount;
    Debug.Log("实际显示行数:" + actualDisplayLines);
}

常见踩坑说明

  • 若刚给commentaryText.text赋值就需要立即读取行数,此时TextMeshPro还未完成布局计算,拿到的会是上一帧的旧值,需要先强制刷新布局再读取:
commentaryText.text = "新赋值的长文本内容";
// 强制立即更新文本布局和网格数据
commentaryText.ForceMeshUpdate();
int lineCount = commentaryText.textInfo.lineCount;
Debug.Log("赋值后的实际行数:" + lineCount);
  • 上述lineCount返回的是全部文本的总行数,如果你使用了Mask、ScrollRect等控件导致部分行被裁切不可见,需要单独计算行坐标和可视区域的交集,才能得到当前可视范围内的行数。

内容的提问来源于stack exchange,提问作者user8810083

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:15:04