提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Ugui基础的Text放大以后会出现毛边或锯齿,而TextMeshPro很好的解决了这个问题,而且还可以添加描边、发光、光照等常用的效果
TMPro采用SDF文字渲染技术,可以使文字放大十几倍后乃然边缘清晰光滑,主要原因是利用矢量渲染的方式代替位图。
2018以后的的Unity已经内嵌了到编辑器里面了,如果旧版的Unity可以去资源商店下载插件。
TMPro会根据字体类型创建额外的字体纹理集,将占用大量的内存空间。
默认支持英文和数字和符号,如果想支持中文,需要单独把中文制作成asset来使用。但是中文文字太多,最好单独制作常用的汉字。
放大以后的效果,上面是TextMeshPro,下面是Text
一、属性介绍
Font Asset:通过Font Asset Creator创建的字体
Material Preset:字体的材质
Font Style:样式
Font Size:字体大小
Auto Size:根据控件大小自动显示
Color Gradient:颜色渐变效果
主要的附加效果可以通过shader设置
Face:可以调节文字的颜色,Softness模糊度,Dilate粗细
Outline:描边Color颜色,Thickness颜色
Underlay:底纹效果,Color颜色,OffsetX和OffsetY的偏移,Dilate范围大小,Softness模糊度
二、字体制作
Font Asset Creator窗口属性
- SourceFontFile:生成Text Mesh Pro字体的时候,必须选择一个源字体,这个字体也只会用来生成对应的font asset,而不会包含在构建中,除非你也在其他地方使用到了,或者将它放在了Resources文件夹中。
- SamplingPointSize:字体大小,可以设置大小,也可以使用自动调整。自动调整将尝试使用最大的字生成纹理。如果你想要精确控制图集和字体的时候,通常会对SDF字体设置Auto Sizing和Custom Size来精确控制图集和字号。
- Padding:字体纹理间距,为SDF过渡创造了空间。Padding越大,过渡就越平滑。这样可以得到更高质量的渲染和更好的效果,比如描边。对于512x512纹理来说,5的Padding通常就很好了,纹理看起来越糊的越好。下图分别间隔是0和20的纹理
- Packing Method:打包方法,可以选Fast(快速)会比较快但最终可能会使用较小的字体大小,Optimum(最佳)。在开发的时候使用Fast,最终Build的时候使用optimum
- Atlas Resolution:图集大小,较高的分辨率会产生更精细的渐变,从而产生更高质量的文本。对于大多数字体,当包含所有ASCII字符时,512x512纹理分辨率就足够好了。但是,如果需要支持成千上万的字符的话,就不得不使用大纹理了。但纹理有限,字符无限,仅仅放大分辨率并不是一个好的解决方案,也不可能满足所有需求。一般这种情况下,可以通过创建多个font
- Character Set:选用的文字来源。最常使用的是ASCII和Characters from File。如果使用中文的话就要选后者。
- Character File:需要用到的中文文字的文档
- Render Mode:字体渲染模式
- Get Kerning Pairs:是否读取字体的字偶距
字体制作过程
- 将ttf格式的字体导入到Unity里面,例如:chtest.ttf
- 创建一个
txt
文件,里面包含游戏中常用的汉字,导入到Unity里面。例如:zhtest.txt -
打开Font Asset Creator点击菜单Windows / TextMeshPro / Font Asset Creator,第一次会弹出提示框,点击
Import TMP Essentials。
-
在
Font Asset Creator
窗口中设置Source Font File设置刚导入的字体。
-
在
Font Asset Creator
窗口中设置Character Set
为Characters from File。
-
然后把刚刚的
汉字的txt
赋值给Character File。
-
点击Generate Font Atlas,保存字库asset。
-
制作完成以后ttf字体和文本就可以删除了,最好是备份防止以后修改。
设置如下图,会显示制作成功和失败的具体信息
二、常用功能
现在实现一些文字的效果就很简单了
默认显示
- 描边,设置Outline的颜色Color和粗细Thickness
- 柔和设置Softness
- 扩展粗细Dilate
- 发光