Unity 中文不显示问题

当需要在Unity中具有中文UI的时候,会遇到中文或者标点符号不显示,取而代之的是□。这是由于默认字体不支持中文,或者中文字体不包含中文字符编码库。
The character with Unicode value XXX was not found in the [LiberationSans SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u25A1 in text object [Text].

中文显示□
修复后

解决方法之一,高效方法,以TextMeshPro为例:

  1.  在网上下载一个中文字体包,但是这种途径有可能失败,最把稳的是在 C:\Windows\Fonts 中挑一个中文字体拖到Unity素材文件中:

  2.  在package manager中安装 TextMeshPro,如果已经在用最好,那么选中拖入的字体文件,右键>Create>TextMeshPro>Font Asset

  3. 然后直接就可以使用中文字体啦!替换成新生成的Untiy字体文件就可以了!!但是该方法的问题是,它只会自动支持动态(就是你已经输入到Text文本框)的文字,如果你多语言切换,在代码中更新文本框中的内容时,不曾出现过的字体它还是显示不出来。如下图,只有你输入到文本框里过的字它会包括,其它就不会。此外,文字过多时这个也就麻烦了。


解决方法之二,传统方法,以TextMeshPro为例:

  1. 在网上下载一个中文字体包,但是这种途径有可能失败,最把稳的是在 C:\Windows\Fonts 中挑一个中文字体拖到Unity素材文件中:

  2.  在package manager中安装 TextMeshPro,如果已经在用最好,然后Window>TextMeshPro>Font Asset Creator

  3. 同方法一原理一样,但是这个批量处理,在Source Font File 中选择刚才导入的中文字体,然后Character Set中选择来自文件, 文件为.txt格式(自己创建一个)包含所有可能用到的中文字符结尾有资源(一般来说三千来个,根据自己需要增删字符和标点符号),也可以选择手动输入(何必呢)

  4.  接着就是点击Generate,这里建议是先使用低分辨率和几个中文字符“试水”,这样很快且高效;如果成功显示中文了再把所有字符包括进去,将分辨率提高一些,一般需要几十秒来生成,可以参考以下设置(更多设置参数请参考Font Asset Creator | TextMeshPro | 4.0.0-pre.2)。

  5. 生成完成后就是一个体积几十MB的文字群贴图(所以分辨率得高)直接保存后就可以使用了,如果你已经广泛使用了其它不显示中文的字体而不想一个一个的该,可以尝试再原有字体设置里把FallBack字体加上生成的字体(注意第一次生成成功后下一次Save会直接覆盖原字体包)! 
将生成好的字体赋到目标字体上

文字库可以在这里下载,3500字版本应该够用了

wy-luke/Unity-TextMeshPro-Chinese-Characters-Set: 用以创建 Unity TextMeshPro 中文字体,3500 / 7000 常用汉字库、符号库。Used to create Unity TextMeshPro Chinese font.

如果 Unity 的 UI 文本无法显示中文,可能是由于字体或文本编码的问题导致的。以下是一些可能的解决方案: 1. 字体设置:确保你所使用的字体包含了中文字符。在 Unity 的 Text 组件中,可以通过修改字体属性来选择一个支持中文字符的字体。也可以在资源管理器中选择字体文件,然后在 Inspector 窗口中设置 "Character"(字符)属性,将其设置为 "Unicode"。 2. 编码设置:如果你的脚本中直接使用了中文字符串,确保脚本文件的编码格式为 UTF-8。在 Visual Studio 中,可以通过 "File"(文件)菜单中的 "Advanced Save Options"(高级保存选项)来设置文件编码。 3. 多语言插件:考虑使用 Unity 的多语言插件,如 I2 Localization 或 Polyglot 等。这些插件可以更方便地管理多语言文本,并提供了对同语言的本地化支持。 4. 字体渲染模式:在 Text 组件的 Inspector 窗口中,尝试修改 "Font Rendering Mode"(字体渲染模式)属性。有时,同的渲染模式可以解决某些字符显示正确的问题。 5. 字符集问题:如果你的项目中包含了多个字符集(例如,中文和英文),请确保在 Unity 编辑器和操作系统中都正确设置了所使用的字符集。 如果以上方法都不能解决问题,可能需要进一步检查字体文件、编码以及其他相关设置。另外,确保你的操作系统和 Unity 编辑器都是最新版本也是很重要的。 希望这些解决方案能帮助到你!如有其他问题,请随时提问。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bunny Chen

来啊来让我发家致富,一毛钱可!

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

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

打赏作者

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

抵扣说明:

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

余额充值