我在为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)来拆分字符串。
3条答案
按热度按时间46scxncf1#
您无法通过语言包导入它。您应该做的是:
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
bvjveswy3#
对于遇到这个问题的人。你可以尝试使用一些HTML类似的语法,看看它是否有效。
例如:使用
用于换行符而不是\n