文本对象在unity3D中的相对定位

时间:2017-06-27 19:22:03

标签: unity3d

在Unity中,我希望根据第一个对象的长度将UI文本对象与另一个文本对象对齐。喜欢:“[Aladinn]说:你好世界”。 其中“[Aladinn]”是(可点击的)第一个文本,“说:你好世界”是第二个文本。 显然,第一个文本的长度可能会有所不同。

我找到了一些方法来根据文本框的内容设置文本框的长度,但是有没有办法将第二个文本的开头附加到第一个文本的末尾,同时保持它们是单独的对象?

2 个答案:

答案 0 :(得分:0)

您正在寻找Text#preferredWidth

文档页面上的描述并不是非常有用,但是这个值是“ 这段文字需要多长时间?”除了身高,PreferredHeight是相同的。

因此,为了找出另一个对象的文本结束的位置,你必须得到它的Text组件并查询它的首选宽度和瞧,你有它的大小(以像素为单位,Canvas对象几乎肯定会成为它的场景大小也是如此,除非你用规模做了顽皮的事情。)

我在one of my projects中使用它来使鼠标悬停工具提示看起来很漂亮,尝试各种宽度和高度值,直到达到所需的比例。它有点复杂,但这与首选宽度和高度假设某些事物(优选宽度希望将字符串显示在一行上,而首选高度考虑当前)这一事实有关。宽度并假设换行包含在所需的高度中。

答案 1 :(得分:0)

根据您对问题的描述,我会使用脚本来改变文本的字符串,而不是使用两个单独的文本对象。

这对于您对问题的描述很好:

public string name;
public string flavorText;
public Text textUIComponnent;

然后在代码中的某个地方,例如Start:

void Start {
textUIComponnent.text = name + " " + flavorText;
[...]
}