文本是一个包含未定义字数的字符串。对齐应该是这样的:
The text is starting from here
then when the line is over it
goes to the next line etc.
是否可以使用UI组件在Unity中以这种方式对齐文本?
答案 0 :(得分:3)
不,没有办法内置。
请注意,Unity 不会提供“文字长度”功能 - 就像iOS一样。
我根本无法想到找出“它包裹”的地方。或许,您可以逐个遍历每个字符,一次一个字符地生成字符串,当宽度停止增加时,您知道它已经包裹。 (获得.renderer.bounds.size.x
)的宽度
我可能会鼓励你说三个UI.Text
并分开你的字符串。简单地说,将字符串分隔成50个字符的块(在空格处停止)或者可能是7个字。 (它们的长度不一样,但一切都会好的。)
注意强>
如果您是新的Unity程序员或业余爱好者,那么通常的解决方案就是
“使用资产!”
某个地方的人可能编程了你需要的东西。因此,开始谷歌搜索“免费资产,围绕形状包装文字”或类似的东西。通常情况下,向制作此类软件包的人发送电子邮件是有收费的,而且如果他们不这样做,他们通常会知道所需要的东西。
示例.. http://forum.unity3d.com/threads/text-box.124906/
我通过Google搜索unity3d text utility wrap around a shape
这里有一些代码可以将LONG行合理文本拆分为多行长度限制,例如50个字符。请注意,文本必须是“合理的”,你不能有任何可笑的长词等。
string wholeSentence = "Your whole sentence here ... goes on and on.";
List<string> words = new List<string>(
wholeSentence
.Split(new string[] { " " },
StringSplitOptions.RemoveEmptyEntries)
);
List<string> finalLines = new List<string>();
int count = 0;
string nextLine = "";
foreach (word w in words)
{
nextLine = nextLine + w + " ";
count += w.Length;
if (count>50)
{
finalLines.Add(nextLine);
count=0;
nextLine = "";
}
}
if (nextLine!="") finalLine.Add(nextLine);
将在List
“finalLines”中为您提供所有行!干杯