Unity TextMeshPro替代Text组件创建简体中文字体纹理集

时间:2024-04-16 19:15:42

Unity原生的Text组件有一个毛病,只要文本放大字体放大就会有毛边或锯齿,一个更好的解决方案是用TextMeshPro替代ugui中的Text组件。

TMPro采用SDF文字渲染技术,可以使文字放大十几倍后乃然边缘清晰光滑,主要原因是利用矢量渲染的方式代替位图。

在新版的Unity中已经通过包内嵌了该组件,旧版的Unity也可以在资源商店找到该插件。

当然TMPro也有一些缺点和麻烦的地方,它必须根据字体类型创建额外的字体纹理集,而这个字体纹理集将占用大量的内存空间。

对于英文或一些字符组合相对较少的语言而言,这不会构成任何困难,例如英文只有26个字母就可以组合为所有的词汇,加上标点符号也不会有太多内容。

然而中文真的是噩梦,在Unicode中,光是基本汉字就有2w多:

 

 这个字体纹理集渲染起来相当缓慢和庞大,你可以渲染指定Unicode编码的简体中文字段以及基本的英文和数字,中英文标点符号等。

但更好的做法是只渲染一些常用的中文字库文件,TMPro提供通过txt文件来进行渲染:

 https://files.cnblogs.com/files/koshio0219/Chinese7000.zip

 可通过上面的链接下载该文件,文件中包括常用简体字,英文,中英文标点符号,数字,罗马数字和一些特殊字符。

生成后的纹理如下: