全球快看点丨Unity 关于TextMeshPro自动换行的问题
先看问题:问题展示:独立游戏交流群807432457我们可以看到,在汉字+数字或者英文字母的时候,如果当前行剩
2023-05-10先看问题:
我们可以看到,在汉字+数字或者英文字母的时候,如果当前行剩余宽度不能完整显示数字或英文部分,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多行的代码,所以这么修改以后,看起来效果是对的。
至于会不会有其他的问题,目前我没测出来。如果各位看官知道修改以后会导致什么问题,也欢迎在评论区留言,我及时改正。