TextMeshPro文字消失bug解决方案

问题演示

我们在使用Unity做游戏的应该基本上都会使用Unity的TextMeshPro插件了吧,这个插件好用是好用,但是注意有一个大家在开发的时候非常容易犯的错误,会导致在Unity编辑器内显示正常,而打包出来后游戏中的所有文字会异常消失,就像下图演示。

Scene的TextMesh正常显示
UI上的TextMesh(UI)这边也正常显示
文字全消失了

问题复现流程

上面的情况怎么复现的呢,就是我们场景中使用的文本和UI使用的文本用的同一个字体,然后场景中的文本框控制了大小或透明度,比如飘字效果,很常见吧,相信大家都会用到,那样就会导致所有UI的文本框也消失。

问题原因是什么?

使用Unity提供的Frame Debug排查属性,发现是其中的ZTest变更了。

正常的时候ZTest是Always,如下图所示。

文字消失的时候ZTest变成了LessEqual,也就是说我们在控制用Tween变化TextMesh文本框的时候,把ZTest属性触发了修改,至于什么时候修改的就不深究了。

问题如何解决?

找到问题了,那就好办了。

我们只需要将UI的文本框和场景的文本框的材质球替换成不一样的即可。

流程如下:

  • 找到字体文件的.asset

        

  • 选中材质球,按键盘ctrl+D复制一份

        

  • 修改材质球的名字,比如_UI和_Scene这样区分场景用还是UI用
  • 这样在文本框的Material Preset下拉会自动出现复制的材质球
  • 在正确的地方选择正确的材质球即可,UI选择UI的,场景选择场景的,不能混用
  • 这样修改后经过测试就一切正常了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼蛋-Felix

如果对你有用,可以请我喝杯可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值