Unity TMP (TextMeshPro) 更新中文字符集
TMP更新中文字符集
- 1 字符集缺失说明
- 2 字体的字符表
- 2.1 字符表更新模式:动态
- 2.2 字符表更新模式:静态
- 3 更新字符集步骤
- 3.1 打开纹理更新面板
- 3.1 导入文本文件
- 3.3 关于警告处理
- 4 修改TMP默认字体设置
1 字符集缺失说明
使用TMP显示中文需要用到中文字体,推荐使用微软雅黑,也可以使用其他中文字体:
免费字体下载链接(资源来自于网络,侵删)
导入中文字体后,创建TMP字体,更换为中文字体后,仍然会有一部分中文显示不全的问题,这时候需要更新字符集。
原因是创建的TMP字体纹理包含的字符有限,无法包括所有的字体,这时候调整纹理大小,或者加入新的字符即可,最通用的办法就是加入所有的常用字符,使用txt文件更新TMP材质即可。
2 字体的字符表
正常导入一个字体,创建TMP字体后,可以看到右侧的字符表、象形文字表、可调整的象形文字表。
2.1 字符表更新模式:动态
初始为空,图集更新模式为动态,将随着各种字符的输入会动态的增加字符纹理到TMP材质纹理。
创建TMP文字对象,默认为 New Text …,更换字体为创建的中文字体后,这些字符将加入到TMP字符纹理,之后使用该字体输入的文字也会加入到纹理中。
需要注意的是:字体纹理的大小,项目使用的文字数量多时,应该适当扩大图集的大小。
点击TMP字体文件,在生成设置(Generation Setting)可以调整 纹理长宽属性(Atlas Width / Height )
此时纹理更新如下:
字符集更新如下:
2.2 字符表更新模式:静态
如果设置为静态,后输入的文字将停止更新到图集,只使用当前已有的字符集来作为字符的字典,如果字典中不存在的文字,不会有任何显示。
需要注意的是:此时图集的大小和其他属性是固定的,无法调整。
如下:当前字符集纹理不包含字符:123,所以显示为空!
3 更新字符集步骤
3.1 打开纹理更新面板
点击 TMP字体右上角 - Update Atlas Texture
3.1 导入文本文件
文本文件需要导入到unity才能被TMP识别,这里提供一个文本文件,
字符集下载链接
字符集选择:Character from file,调整字体图集大小:8192* 8192,
渲染模式默认即可,拖入文本文件点击生成字体纹理进行更新。
过程会持续一段时间
生成完毕后,点击 Save
可以看到,字体的纹理更新
3.3 关于警告处理
更新后,可能会出现警告:
- - Unable to add the requested character to font asset [MSYH SDF]'s atlas texture. Please make the texture [MSYH SDF Atlas] readable.
选择字体文件,展开内部贴图文件
点击右上角,右键单机Inspector选项卡,选择:Debug
稍后切换为:Normal,即可回到正常显示
勾选 IsReadable 属性,此时警告消失
此时可以切换为:Normal,回到正常显示
至此,TMP更新中文字符集完成,可以正常显示常用的中文字符!
4 修改TMP默认字体设置
在 TMP插件的Resources目录下,存在一个配置文件:TMP Settings
根据默认配置的路径,字体文件,每次创建TMP都会使用该配置的字体,修改这里的字体,将修改创建TMP对象时的默认字体。
注意:该配置只在Resources目录下生效!
拖入该中文字体,之后创建的TMP对象,使用的字体均为该中文字体。