Unity插件学习(六) ------ TextMeshPro插件

Unity插件学习(六) ------ TextMeshPro插件

小新:“UI里面还有一类组件是用TextMeshPro开头的,这类组件有啥用啊?”
大智:“TextMeshPro是Unity收购的一个第三方插件,可以解决文字渲染的很多问题,可以替换UI Text。比如UI Text就没办法对文字加入特效。”
小新:“哇,可以直接对文字加入动态特效啊?那就不用美术同学辛苦去做了?”
大智:“是的哦”
小新:“那我们今天就来学习一下这个吧!”

TextMesh Pro

TextMesh Pro是Unity中文字渲染的终极解决方案,原本是一个第三方插件,后被Unity收购后并入Unity,现在可以免费使用。

安装

对于Unity2018及以后的版本,可以从菜单栏Window > Package Manager中安装TextMesh Pro。

Unity2018.2及之后的版本TextMesh Pro包会被默认安装到工程中,无需手动安装。

对于Unity2017及之前的版本,可以通过AssetStore()下载导入此插件。

创建

TextMeshPro最基础的用法就是使用它的Text组件来显示文本。有两种使用方法,一种是通过网格MeshRenderer渲染,一种是通过UI系统渲染。

Mesh方式创建方法:Hierarchy的Create菜单(右键菜单)> 3D > TextMesh Pro - Text

UI方式创建方法:Hierarchy的Create菜单(右键菜单)> UI > TextMesh Pro - Text

第一次创建时,会弹出一个提示窗口:

这似乎是您第一次访问TextMesh Pro,因此我们需要为您的项目添加对使用TextMesh Pro至关重要的资源。这些新资源将放置在项目的根目录中的“TextMesh Pro”文件夹。

点击下方的按钮Import TMP Essentials即可。

导入必要资源后,下方的TMP Examples & Extras会变为可点击状态。这些资源是可选导入的,可以点击Import TMP Examples & Extras来导入实例和额外资源。

Examples&Extras包中包含额外的资源和示例,可以更轻松地发现和学习TextMesh Pro的强大功能。这些额外资源将与TMP基本资源放在同一文件夹中。

TextMesh Pro - Text 和 UGUI - Text 的区别

TextMesh和UIText的渲染对比

UGUI的Text使用了一张字体贴图,Unity把所有需要显示的字符放到了一张图集中,字符的形状是通过像素定义的。当我们放大时,像素不够用就会出现文字变模糊的情况。

TextMesh Pro的Text使用了不同的技术来渲染文字,叫做Signed Distance Field(后面简称SDF,对该技术感兴趣的同学可以自行搜索一下)。和UGUI类似,这个技术同样需要将字符放到一个图集中,但是不使用像素来代表字符的形状,而使用SDF技术来生成字符的形状。使用这种技术字符在渲染时不会因为缩放而造成字符模糊的情况,总是能够准确的渲染字符的边缘。

创建字体

TextMesh Pro无法像UGUI Text那样使用动态字体,因为TextMesh Pro需要对字体进行预处理来计算SDF,这部分计算非常耗时。这对于英文字体来说影响不大,一个字体文件或一张贴图包含的信息都很少,但是对于字符非常多的语言如中文就影响很大。

所以对于中文环境建议如下:

  • 对于游戏中显示的文字可以使用TextMesh Pro的SDF字体,提高显示效果和特效处理。
  • 对于游戏中的输入框建议使用UGUI自带输入框,使用动态字体。

创建SDF字体文件的过程如下:
1、菜单栏打开Window > TextMeshPro > Font Asset Creator

2、在Font Source中选择你想要创建的字体

3、在Character Set中选择要生成的字符集

4、其他选项根据需要进行设置(下面会详细说明每个属性的作用)

5、点击下方的Generate Font Atlas按钮生成字体

6、生成结束