获取文本的行数

时间:2018-03-13 17:54:04

标签: c# unity3d

我有一个可以是任何东西的字符串,我的场景中有一个文本对象,它有一个设置的宽度和一个可变的高度。

是否有一个内置函数可以计算我的字符串在该文本对象中的行数,以便我可以调整它的高度?我想这样做是因为我需要在文本中使用背景 而不是其他任何地方。

enter image description here

3 个答案:

答案 0 :(得分:4)

  

我想要这样做是因为我只需要在文本中使用背景而不是其他任何地方。

在我看来,这应该可以解决您的问题:

  

为了使带有Text组件的Rect Transform符合文本内容,将Content Size Fitter组件添加到具有Text组件的同一Game Object。然后将Horizo​​ntal Fit和Vertical Fit下拉菜单设置为Preferred设置。

在您的情况下,您想要控制水平而不是垂直,请尝试将垂直设置设置为“首选”。

如果这不能直接对您的文本组件起作用,您可能希望将文本组件作为灰色面板框的子组件,然后再将contentfitter添加到其中。

来源:https://docs.unity3d.com/Manual/HOWTO-UIFitContentSize.html

免责声明:我没有测试这个基于组件的尝试,但我相信它可能是解决方案或让您更接近一个。

答案 1 :(得分:4)

虽然Doh09的答案肯定是有效的,但您也可以查询UI.Text.preferredHeight属性,询问Text对象文本的高度,并使用该值自行更改背景对象的大小。

当然,两个答案都假设您使用的是新UI文本,而不是TextMesh或OnGUI。如果您没有使用新用户界面,那么我建议您更改为使用the New UI

您可以在我自己的项目here中查看此示例用法,其中我计算文本所需的宽度和高度,并修改RectTransform,直到对象的首选大小在布局首选比例内。这是最后一节(有一些改动可以理解):

0

除以四和偏移以考虑文本和背景之间的相对缩放以及一些边缘填充。

答案 2 :(得分:0)

现在发布答案以求完美。

因为我使用了TextMeshPro,所以可以使用TextMeshProUGUI对象的preferredHeight()方法。我将值6添加了一点空间。