我在为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文件中的(enter)换行符来换行。
发布于 2020-02-26 00:26:40
你不能导入它的语言包。你应该做的是:
string line1 = LanguagePackage.getTextByID(ID1);
string line2 = LanguagePackage.getTextByID(ID2);
string twoLinesOfText = line1 + "\n" + line2;
UITextComponent.GetComponent<Text>().text = twoLinesOfText;发布于 2021-10-22 17:34:43
我自己也遇到了这个问题,一个小小的调查显示,我认为字符串中的\n已经转换为\n,所以它在文本框中显示为\n。在调试过程中将其转换为just \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
https://stackoverflow.com/questions/60398929
复制相似问题