【问题标题】:How to get the number of lines displayed in a Textmeshpro - text (UI)?如何获取 Textmeshpro - 文本(UI)中显示的行数?
【发布时间】:2021-11-05 02:26:16
【问题描述】:

所以在我的脚本中,我想知道 Textmeshpro - 文本 (UI) 中显示了多少行。

public TextMeshProUGUI commentaryText;

Debug.Log("number of lines " + (commentaryText.text.Split('\n').Length - 1));

我尝试了类似上面的方法,但它只会显示带有 \n 换行符的行数,但是我也想知道当它们达到文本框的限制时由环绕引起的行数。有没有办法获取用户看到的行数?

任何建议表示赞赏。谢谢

【问题讨论】:

    标签: unity3d textmeshpro


    【解决方案1】:

    基本上你可以访问commentaryText.textInfo.lineCount 来获取行数。我所做的是在单击按钮时记录我创建的 TextMeshPro 的行数,因此我能够对其进行测试:

    public TextMeshProUGUI textMeshPro;
    
    public void Click()
    {
        Debug.Log(textMeshPro.textInfo.lineCount);
    }
    

    更新您希望从 cmets 获得的内容:

    您需要将 TMP 设置为底部对齐并将溢出设置为masking。然后,您需要一个具有遮罩组件的父级(我使用了基本面板)。超出父级大小的文本被隐藏。

    我不确定您希望使用多少行数,但这也会计算隐藏行数。因此,在我的示例中,如果您使用 lineCount,它将记录 6。

    【讨论】:

    • 无论是否向用户显示,是否可以获得行数?如果我们将溢出设置为溢出,那么有效地显示的行数。但就我而言,我不想让它溢出,只知道实际上有多少行
    • 我遇到的另一个问题是溢出模式。当我将其设置为截断时,它会截断底线,我也在寻找一种溢出模式来截断顶线
    • 我根据您关于截断顶行的问题更新了我的答案,我不确定我是否得到了您想要的行号
    • 感谢您的帮助,非常感谢。只有最后一件事不太有效,那就是我的遮罩面板必须具有至少 1 的 alpha 才能工作。我基本上不希望显示蒙版图像,因此试图将其设置为零的 alpha。我将遮罩面板对象添加到我的 OP 中。你能看到如何改变它,使蒙版图像本身不被绘制,但蒙版仍然作用于文本?
    • 在遮罩组件下有那个复选框“显示遮罩图形”,如果您取消选中它,遮罩图像应该被隐藏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多