Unity5.6进行了许多升级,包括引入了新的系统Video Player等。其中最有用的我觉得应该是开始整合Asset Store中的年度最佳插件Textmesh pro,并且提供免费下载。
比起UGUI的Text控件,Textmesh pro有着许多优势。它使用Signed Distance Field(SDF)即有向距离场作为主要的文本渲染管线,在不同的分辨率和不同的位置下都能渲染出清晰的文本,而且它通过不同的着色器来实现描边,阴影,发光等效果,表现更出色的同时性能也更好。
但是,Textmesh pro使用时需要制作字体文件即Font Asset,对于英文数字即字符只需制作ASCII的文件即可,但是对于中文,如果我们的文字需要动态生成且不可控,那么就需要考虑所有可能需要的文字,生成的字体文件就会很大,不适合手游等要求安装包小的项目使用。所以建议只在可确定中文的UI和ASCII包含字符上使用Textmesh pro。
下面介绍一下如何制作Font Asset。
首先从Asset Store导入Textmesh pro,然后选择Window->TextMeshPro->Font Asset Creator:
打开字体文件制作器:
- Font Source:选择需要制作的字体
Font Size:字体大小,可以选择自动或者指定大小。建议自定义一个大小,如果要添加或者删减文字,重新之后之后可以方便保持文字的大小。
Font padding:文字间距。即生成的字体文件贴图上字与字之间的间隙,这个值会影响字体的描边效果。
- Packing Mode:打包模式,可选快速或者优化。
- Atlas Resolution:生成的字体文件贴图的大小。如果我们选择的字体大小是自动,那么插件会根据贴图大小来选择生成的字体大小。如果我们规定了字体大小,而贴图大小不够的话,我们就会失去一些字的信息。所以我们要计算好这个值,在能够包括所有需要的字的情况下将文件大小控制到最小。
- Character Set:选择文字来源。最常使用的是ASCII和Characters from File。顾名思义前者是使用ASCII字符,后者是使用我们制定文本中的文字。需要使用中文的话就要选后者了,一般3500常用汉字也够了。
- Font Style:字体风格,就是正规,粗体,斜体等Word中常见的选项,可以根据我们的需求选择。
- Font Render Mode:字体渲染模式。一般选择默认的即可。
- Get Kerning Pairs?:决定是否读取字体的字偶距。
全部设置好之后点击Generate Font Atlas生成字体文件:
生成成功之后我们可以查看到生成的信息和贴图,如果有问题比如丢失字体或者想上图图贴大小可以减小的情况,我们就可以调整参数之后重新生成。如果觉得没有问题了,我们就可以点击Save TextMeshPro Font Asset按钮存储生成好的字体文件。
查看生成的Font Asset文件,我们可以在Inspector面板上看到字体文件的信息:
很多信息都可以在面板上进行修改。如果我们觉得需要的文字太多而一张大分辨率的贴图文件太大,我们可以选在将这些文字分成几个小文件,生成不同的字体文件,再利用Textmesh pro的字体回调功能(当前字体文件中未查询到文字信息时会继续查询回调文件中的字体信息)添加回调字体文件:
需要显示文本时,我们可以创建Textmesh Pro对象,一般是UI对象,在Create->UI中选择TextMeshPro - Text(或者普通3D对象Create->3D->TextMeshPro - Text),在Font Asset中选择我们生成的字体文件即可:
在下载的Textmesh pro包中也有User Guide,我们可以阅读官方的手册来学习这个非常有用的插件,这里后续也会出有关Textmesh pro其他的教程,欢迎继续关注。
by:蒋志杰