Unity 2019-linebreak \n不适用于UI文本元素



我在让换行符为Unity UI元素工作时遇到了一些困难。(Unity 2019.2.17f1个人版(

我正在做的是:

string twoLinesOfText = LanguagePack.getTextByID(ID);

结果:

twoLinesOfText = "Text line 1nText line 2"

预期输出:

Text line 1
Text line 2

现实:

Text line 1nText line 2

我尝试过使用"\n"、"\\n"one_answers"\r\n"。这些都没有给出预期的结果。

我使用将文本分配给组件

UITextComponent.GetComponent<Text>().text = twoLinesOfText;

这种直接分配会有问题吗?我需要通过toString((来推送我的字符串,还是以某种方式解析它以识别?

解决方法:我有一个变通办法。通过为我的LanguagePack使用XML文件,并在基本文件中插入(输入(换行符,我将换行符输入到我的Unity UI元素中。显然,这并不理想。在Debug.Log中读取字符串并不会显示最终使用了哪一个换行符代码:它只是根据XML文件中的(输入(换行符来打断字符串。

您无法通过语言包导入它。你应该做的是:

string line1 = LanguagePackage.getTextByID(ID1);
string line2 = LanguagePackage.getTextByID(ID2);
string twoLinesOfText  = line1 + "n" + line2;
UITextComponent.GetComponent<Text>().text = twoLinesOfText;

我自己遇到这个问题时,经过一点调查,我认为字符串中的内容已被转换为\\n,因此在文本框中显示为\\n。在调试期间将其转换为",\n可以获得所需的多行文本。现在调查一下它在我的数据链中的转换位置:-(

好的,调查完成。在我的电脑上,Visual Basic中的一个程序使用file.WriteAllLines函数保存了一个文件,其中一行有几个实例。看看记事本上的那个文件,就会发现它正确地写下了那一行。当我在unity程序中使用File.ReadAllLines时,问题出现了,因为它将这些实例转换为\\n。据我所知,这不是一个记录在案的行动,事实上,在阅读MS文档时,有可能会认为它会将这一行拆分为多行,但事实并非如此。我签入了我的VB程序和File.ReadAllLines在那里没有这种行为。这可能与环境有关,VB不使用,C#使用。我通过在字符串上标记替换来解决这个问题,例如字符串。替换("\\n","\\n"(。尝试用File.WriteAllLines从C#中写入字符串也可能会遇到问题。

天哪,这很难写,因为这里的编辑器搞砸了\\n并将其转换为\\n,我最终不得不使用\\\n

适用于遇到此问题的人。你可以尝试使用一些类似HTML的语法,看看它是否有效。

例如:使用
作为换行符而不是

最新更新