全球快看点丨Unity 关于TextMeshPro自动换行的问题

哔哩哔哩 2023-05-10 23:12:30

先看问题:

我们可以看到,在汉字+数字或者英文字母的时候,如果当前行剩余宽度不能完整显示数字或英文部分,TextMeshProUGUI会自动换行。

前言:


【资料图】

今天在群里有群友提出这个问题,我在帮他解答之后,顺便将解决方案写下并和大家分享,希望能帮到更多的朋友。

这种问题我会给出两个解决方案仅供大家参考。如果有其他更合适的方法,也请大家在下方留言。

正文

方案一:

使用富文本的方式解决这个问题。把不想换行的文本使用 <nobr></nobr>包裹起来。

<nobr>独立游戏交流群号807432457</nobr>

效果如下

大体效果就实现了,但是这里有一个问题要注意一下,此时我们在文本中加入空格,可能会引起换行。

对于这种情况,我建议要么别用空格,要么使用<space=float>

至于有的朋友说替换成'\u3000'行不行,得看你制作的文字资源是不是支持,有可能会出现□这种情况,具体的要亲自试一下。

方案二:

修改TextMeshPro的代码。百度查询的时候发现有许多大佬提过这个方法,但是因为版本迭代,我没找到这是在哪....

比如这篇:https://blog.csdn.net/qq_33205561/article/details/103888909

这个我没找到。

我这边演示的版本是V 2.1.4版本,给大家参考。

查找目录。

选择Packages→TextMeshPro→Scripts→Runtime。

最后找到TMPro_UGUI_Private这个脚本,双击点进去。

我是直接搜的 if (isNextFollowingCharacter == false)

将下图示意部分注释掉。第一部分就在搜索的if当中。第二部分稍微向上翻一下。

第二部分在第一部分往上一点的isFirstWordOfLine = false;;

修改后效果如下

最后,我承认我啃不透那4600多行的代码,所以这么修改以后,看起来效果是对的。

至于会不会有其他的问题,目前我没测出来。如果各位看官知道修改以后会导致什么问题,也欢迎在评论区留言,我及时改正。

标签:

广告

Copyright ?   2015-2022 亚洲商场网版权所有  备案号:豫ICP备20022870号-9   联系邮箱:553 138 779@qq.com