查找Unity UI.Text的最大行数

时间:2017-12-07 14:36:13

标签: c# user-interface unity3d text

我尝试确定将UI.Text设置为VerticalOverflow的{​​{1}}的最大行数,以便以后可以使用行计数。到目前为止,我提出了这个代码,这显然是不切实际的,甚至可能是危险的:

truncate

有没有更好的方法来(预)确定UI.Text组件的最大行数(在文本被截断到底部之前)?

2 个答案:

答案 0 :(得分:0)

你可以尝试使用这样的东西

TextGenerator textGenenerator = new TextGenerator(); TextGenerationSettings generationSettings = text.GetGenerationSettings(text.rectTransform.rect.size); float height = textGenenerator.GetPreferredHeight(newText, generationSettings);

您可以在此处详细了解https://docs.unity3d.com/ScriptReference/TextGenerator.html

---与您的代码相关的注意事项---

你调用Canvas.ForceUpdateCanvases(),如果Text允许无限行,那么在运行该代码时会调用很多只调用一个Text并且检查程序设置不正确的调用会导致无限循环。

答案 1 :(得分:0)

感谢@Neven指出我正确的方向! Derived可用于计算背景中的最大行数。优点是不再需要调用TextGenerator,并且不会更改原始文本。它仍然需要一个循环来计算最大线,但它比我的第一个方法要好得多......

Canvas.ForceUpdateCanvases()