首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity 2019 -换行符\n不适用于UI文本元素

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

Stack Overflow用户
提问于 2020-02-26 00:15:13
回答 2查看 2.2K关注 0票数 0

我在为Unity UI元素设置换行符时遇到了一些困难。(Unity 2019.2.17f1个人)

我要做的是:

代码语言:javascript
复制
string twoLinesOfText = LanguagePack.getTextByID(ID);

结果:

代码语言:javascript
复制
twoLinesOfText = "Text line 1\nText line 2"

预期输出:

代码语言:javascript
复制
Text line 1
Text line 2

现实:

代码语言:javascript
复制
Text line 1\nText line 2

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

我将文本分配给组件,使用

代码语言:javascript
复制
UITextComponent.GetComponent<Text>().text = twoLinesOfText;

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

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

EN

回答 2

Stack Overflow用户

发布于 2020-02-26 00:26:40

你不能导入它的语言包。你应该做的是:

代码语言:javascript
复制
string line1 = LanguagePackage.getTextByID(ID1);
string line2 = LanguagePackage.getTextByID(ID2);
string twoLinesOfText  = line1 + "\n" + line2;
UITextComponent.GetComponent<Text>().text = twoLinesOfText;
票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60398929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档