TextMeshPro是个好东西,但是原生不支持中文,需要把中文字体转换为TextMeshPro才可以使用,即创建TextMeshPro中文字体,为TextMeshPro添加中文支持。(文章内含 常见中文字+英文单词+符号 txt 文件下载地址。)
更新:更新了一个制作好的字体文件,可以直接拿来用,下载链接:
https://github.com/wy-luke/Unity-TextMeshPro-Chinese-Characters-Set
-
在Unity中新建一个文件夹,用来存储字体,并把你想要转换的中文字体放进去。比如微软雅黑等。
-
打开 Font Asset Creator 窗口: Window > TextMeshPro > Font Asset Creator.
-
Font Asset Creator 窗口如下,选项很多,接下来逐一解释一下。
Source Font File: 选择你刚才放到Unity里面的中文字体。
Sampling Point Size / Font Size: 创建字体时采样的SDF(符号距离字段)准确性(翻译自英文文档,我也不太懂。)默认是Auto Size,会尝试使用字体中的所有字符。当然数值越高越好,一般来说 50 to 70 为宜。注意,过大的数值会导致一些字符采不到。我就是用的默认Auto Size
Padding: 字体中效果 (outlines, glow, bevels, etc.) 的大小。一般来说,最好和sampling size 的比例为 1:10。 如sampling size为60时,padding size最好取6。当然你也可以尝试更改这个比例,可能会产生意想不到的效果。我使用的默认5.
Packing Method: 创建字体的方式。Fast可用于快速预览效果,Optimum用于创建最终字体。
Atlas Resolution: 可以理解为分辨率。对于面向手机等移动端的项目,你应该设置为2048x2048。面向电脑端的数值官方没说,我猜是4096x4096,我试了一下效果还行。
Character Set: 你创建的字体的 字符范围,也就是说你要创建的TextMeshPro字体中,要包含的所有字符。在我们这里就是所有的中文字符。一般来说常见中文字+英文单词+符号即可。
下拉选择Characters from File,然后选择包含所有所需字符的txt文件(需要先导入Unity)。下载地址见文章末尾这样能够基本满足任何使用场景,但是这样创建的TextMeshPro文件会较大,我创建的有33MB。为了减小文件大小,你可以下拉选择Custom Characters,填入你项目中需要用到的所有字体。
同理,如果你的项目中包含一些生僻字,可以选择Custom Characters,然后复制填入上面下载的文件中的所有内容,再输入你需要用到的生僻字,如:龓。Render Mode: 渲染模式。在仍然支持光栅化位图处显示文本时,除非您在1:1的比率上呈现小字体(即,10pt字体在屏幕上呈现10px),否则使用SDF模式。
原文档:Determines how text will be presented. While displaying text at
rasterized bitmaps is still supported, use SDF modes unless you’re
rendering a small font on a 1:1 ratio (i.e., 10pt font rendered 10px
on the screen).Get Kerning Pairs: TextMesh Pro can optionally use the kerning information embedded in the font, if available.
Generate Font Asset: 生成TextMeshPro中文字体。点击后开始生成文件。完成后保存。然后在你的TextMeshPro中选择刚才生成的文件即可:
常见中文字+英文单词+符号的 txt 文件 下载链接:
https://github.com/wy-luke/Unity-TextMeshPro-ChineseCharacterSet
(求Star!谢谢!)
蓝奏云下载地址:https://www.lanzouy.com/b026rns3a 密码:1233
感兴趣的可以查看官方文档:
https://learn.unity.com/tutorial/textmesh-pro-font-asset-creation#5f60578fedbc2a0022b98998