关于TextMeshPro 1.4版本对中文支持不友好 方案【Font Fallback 和Dynamic SDF System】
新年第一篇文章, 新年快乐。
中国放假一周, 但是国外可没有啊, 有很多博客的更新,很多技术发布新版本。
--------------------------------------------------------------------
关于TextMeshPro 介绍自己了解吧。
《在Unity 2018中充分使用TextMesh Pro》
钱康莱的分享 http://qiankanglai.me/2017/03/01/unity-textmeshpro/index.html
UWA问答: https://answer.uwa4d.com/question/5a4deec4ecb4a02cff5039d3
之所以说对中文支持不友好是因为 中文文字太多了,全部放到一个纹理上会导致每个字很小,精度不够。因为本身文字就很少肯定没问题。 所以之前有的游戏项目中并不是所有地方都使用TextMeshPro, 比如玩家起名字,玩家名字显示等地方就使用正常的字体。开发可控的地方在使用TextMeshPro.
1、 先说 Font Fallback (之前版中已经存在了)
中文 :回退系统
如果生成的字体图集缺少部分字符,每当输入这些字符时,TextMesh Pro会使字符回退到默认字形,你可以在Edit > Project Settings > TextMesh Pro Settings修改该字形。
你也可以设置一个或多个字体资源,当字符无法在主要图集中找到时,TextMesh Pro会将字符回退为这些资源中的字符。出于优化目的,可以使用高分辨率的主要字体图集,而所有回退图集则使用较低分辨率。
你可以使用TextMesh Pro设置来设定字体和材质或图片精灵资源在Resources路径中的位置。
使用富文本时,你可以插入一个精灵,具体根据你在设置中定义的可用主精灵资源。最简单的方法是导入精灵图集,然后在精灵编辑器中进行切分,右键点击该资源,选择Create > TextMesh Pro > Sprite Asset。
你可以自定义资源的偏移或轴心等设置。相同的,如果在主精灵资源找不到指定精灵,你可以设置一系列回退精灵资源(Fallback Sprite Asset)用于回退。
2、 Dynamic SDF System (Unity 2018.3 Text Mesh Pro 1.4 preview中添加的新功能)
因为SDF AA使字体纹理生成速度超快。在运行时从字体(otf等)中获取字符,并使它们可用于游戏。很有吸引力的是,可以使用具有接近Unity标准动态字体的可用性的字符。
-
Window >TextMeshPro >FontAssetCreator 创建
FontFontAsset资源
- 选择
FontAsset
-
Generation Settings
-
Source Font File
指定字体文件(otf等) Atlas Population Model 设置为 Dynamic
-
Atlas Render Mode
设置为 :SDF AA
-
Sample Point Size
是大约72
(取决于字符的分辨率,字体将很快填充) -
Atlas Wideth
,Atlas Height
(取决于可显示的字符)
-
- 按Apply