1

我在让换行符适用于我的 Unity UI 元素时遇到了一些困难。(Unity 2019.2.17f1 个人版)

我正在做的是:

string twoLinesOfText = LanguagePack.getTextByID(ID);

结果:

twoLinesOfText = "Text line 1\nText line 2"

预期输出:

Text line 1
Text line 2

现实:

Text line 1\nText line 2

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

我使用将文本分配给组件

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

这种直接分配会不会有问题?我是否需要通过 toString() 推送我的字符串或以某种方式解析它以使 \n 被识别?

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

4

2 回答 2

2

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

string line1 = LanguagePackage.getTextByID(ID1);
string line2 = LanguagePackage.getTextByID(ID2);
string twoLinesOfText  = line1 + "\n" + line2;
UITextComponent.GetComponent<Text>().text = twoLinesOfText;
于 2020-02-25T16:26:40.097 回答
0

我自己也遇到了这个问题,经过一番调查,我认为字符串中的\n已经转换为\n,所以它在文本框中显示为\n。在调试期间将其转换为 \n 得到了我想要的多行文本。现在调查它在我的数据链中的哪个位置被转换:-)

好的,调查完成。使用 File.WriteAllLines 函数从 Visual Basic 中的程序在我的 PC 上保存了一个文件,其中一行有几个 \n 实例。在记事本中查看该文件表明它已正确写入该行。当我在统一程序中使用 File.ReadAllLines 时出现问题,因为它将这些 \n 实例转换为 \\n。据我所知,这不是一个记录在案的行动,事实上,在阅读 MS 文档时,可能会认为它会将那条线分成多条线,但它没有这样做。我签入了我的 VB 程序,但 File.ReadAllLines 并没有以这种方式运行。这可能与环境有关,VB 不使用\n,C# 使用。我通过在字符串上标记替换来解决问题,例如 string.Replace("\\n", "\n")。它'

哎呀,这很难写,因为这里的编辑器弄乱了 \\n 并将其转换为 \n ,我最终不得不使用 \\\n

于 2021-10-22T17:34:42.883 回答