unity3d Unity 2019 -换行符\n不适用于UI文本元素

ycl3bljg  于 2022-12-13  发布在  其他
关注(0)|答案(3)|浏览(270)

我在为Unity UI元素设置换行符时遇到了一些困难。(Unity 2019.2.17f1 Personal)
我正在做的是:

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文件中的换行符(enter)来拆分字符串。

46scxncf

46scxncf1#

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

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

xzv2uavs2#

我自己也遇到了这个问题,一个小小的调查显示,我认为字符串中的\n内容已经转换为\n,因此它在文本框中显示为\n。在调试期间将它转换为\n只是得到了我想要的多行文本。现在调查一下它在我的数据链中的什么位置被转换了:-)
好的,调查完成。一个文件被保存在我的PC上,从一个程序在Visual Basic中使用File.WriteAllLines函数,其中一行包含几个\n示例。在记事本中查看该文件会发现它已正确写入该行。当我在Unity程序中使用File.ReadAllLines将这些\n示例转换为\n时,出现了问题。据我所知,这不是一个文档化的操作,事实上,在阅读MS文档时,可能会认为它会将该行拆分为多行,但它没有这样做。我检查了我的VB程序和File.ReadAllLines,那里没有这样的行为。这可能与环境有关。VB不使用\n,C#使用。我通过在字符串上标记一个替换来修复这个问题,例如string.Replace(“\n”,“\n”)。尝试使用File.WriteAllLines从C#写入字符串完全有可能也会混乱\n。
哎呀,这很难写,因为这里的编辑器会弄乱\n并将其转换为\n,而我最终不得不使用\\n

bvjveswy

bvjveswy3#

对于遇到这个问题的人。你可以尝试使用一些HTML类似的语法,看看它是否有效。
例如:使用
用于换行符而不是\n

相关问题