我尝试确定将UI.Text
设置为VerticalOverflow
的{{1}}的最大行数,以便以后可以使用行计数。到目前为止,我提出了这个代码,这显然是不切实际的,甚至可能是危险的:
truncate
有没有更好的方法来(预)确定UI.Text组件的最大行数(在文本被截断到底部之前)?
答案 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()