UI文字多行不均匀对齐

时间:2016-02-07 13:59:21

标签: user-interface text unity3d textbox

文本是一个包含未定义字数的字符串。对齐应该是这样的:

        The text is starting from here
    then when the line is over it
goes to the next line etc.

是否可以使用UI组件在Unity中以这种方式对齐文本?

1 个答案:

答案 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”中为您提供所有行!干杯