在Unity 2018中充分使用TextMesh Pro
不管你是在开发FPS游戏,解谜游戏还是VR体验,都需要特别关注如何处理好用户界面。2017年3月,TextMesh Pro加入到Unity中,这意味着开发者可以更轻松快捷地在Unity中制作精美的UI。
TextMesh Pro是Unity默认文本组件的替代品。TextMesh Pro和默认组件一样拥有高性能,它使用了完全不同的Signed Distance Field(SDF)渲染技术,该技术最初由Valve在《军团要塞2》中使用。TextMesh Pro能够很轻松就能让文本看起来更美观,还提供了更高级的控制功能,你可以通过检视窗口和脚本控制文本效果。
当你在项目中使用TextMesh Pro,它拥有改进的视觉效果。由于使用SDF渲染技术,你可以轻松修改文本的效果,无需重新制作字体。每个TextMesh Pro组件都附带可以调整的材质,从而修改文本的风格。TextMesh Pro还具有更好的控制功能。TextMesh Pro组件包含所有原始文本组件拥有的变量以及更多其它变量。
全世界现在有超过25万名开发者在使用TextMesh Pro,我们将在本文中将介绍如何充分使用这款强大的工具。
TextMesh Pro对比默认文本
使用默认Unity文本时,有时候拉伸或调整文本对象大小会使其看起来很模糊。这是因为该文本对象不带有相应信息控制调整大小后的效果,因此Unity需要“临时拼凑”像素,并尝试动态生成丢失的像素。
TextMesh Pro使用了不同的渲染技术,所以不存在这样的问题。SDF的原则是以高分辨率渲染字体图集,因此字体始终拥有调整字符大小时的外观信息。
使用TextMesh Pro,你可以导入任意字体文件,并点击Window > TextMesh Pro > Font Asset Creator创建自定义字体资源。这允许你为字体图集选择分辨率,选择的分辨率将决定SDF渲染处理文本时的效率。分辨率越低,字体图集生成的速度就会越快。
由于字体带有不同大小的外观信息,它可以从字体图集重构轮廓和阴影,你只需要调整材质的属性,并观察文本外观的变化即可。
更好的控制功能
TextMesh Pro可以提供非常美观的文字,但如果无法控制它,美观的文本又有什么意义呢?
TextMesh Pro组件拥有多个选项,允许你自定义字体大小、段落间距、对齐方式、文字间距等属性,还能启用Autosize功能来使文本适应容器的大小。
Autosize功能和文本容器可以让你在处理不同平台或文本语言时更好地控制文本效果,因为它们允许文本自动根据文本容器调整大小,不必编写任何脚本。然而,如果你想在运行时修改这些设置,你可以从TextMeshPro API访问TextMesh Pro组件中的所有变量。
对于额外的自定义图层,你可以添加Text Info Debug Tool 组件到文本对象上,以便直观地表示字符、文字、链接和文本行等属性。
如果你希望在每次插入标头,标题或引语时节省格式化文本的时间,可以根据特定用途设置风格图集。例如:向标头添加装饰内容。
若要创建风格图集,选择Create > TextMesh Pro > Style Sheet即可。你可以将新资源设为默认风格图集,在Edit > Project Settings > TextMesh Pro Settings进行设置即可。
富文本
除了用检视窗口和脚本控制文本的外观,你还可以使用文本字段进行控制。
如果你熟悉HTML或XML,可以使用它们自定义文本效果。如果不熟悉的话,可以阅读如何在TextMesh Pro中使用富文本指南来了解。当你想在同一文本对象中使用多种风格、大小和材质时,该功能非常实用。
自定义材质
使TextMesh Pro变得美观的另一个方法是给文本应用表面着色器,这能让场景中的光照影响文本。
下图的示例中,几个实时点光源会在场景中移动,展示文本受光照影响的效果。
材质属性提供了选项用于自定义各种设置,例如:Face、Outline、Bevel、Lighting、BumpMap、EnvMap、Glow和Debug设置。
创建出满意的材质后,你可以创建一个材质预设,以便能够在任何时候重复使用字体资源。我们可以右键单击材质名称,选择‘Create Material Preset’,这样做会创建材质预设资源,它可以在TextMesh Pro component > Font Settings > Material Preset中选择。
回退系统
如果生成的字体图集缺少部分字符,每当输入这些字符时,TextMesh Pro会使字符回退到默认字形,你可以在Edit > Project Settings > TextMesh Pro Settings修改该字形。
你也可以设置一个或多个字体资源,当字符无法在主要图集中找到时,TextMesh Pro会将字符回退为这些资源中的字符。出于优化目的,可以使用高分辨率的主要字体图集,而所有回退图集则使用较低分辨率。
你可以使用TextMesh Pro设置来设定字体和材质或图片精灵资源在Resources路径中的位置。
使用富文本时,你可以插入一个精灵,具体根据你在设置中定义的可用主精灵资源。最简单的方法是导入精灵图集,然后在精灵编辑器中进行切分,右键点击该资源,选择Create > TextMesh Pro > Sprite Asset。
你可以自定义资源的偏移或轴心等设置。相同的,如果在主精灵资源找不到指定精灵,你可以设置一系列回退精灵资源(Fallback Sprite Asset)用于回退。
性能
在性能方面, TextMesh Pro的性能和默认文本的性能没有差别。它仍会在四边形上渲染,因此它和使用位图字体时一样高效,而且也没有运行时内存分配,TextMesh Pro只会在运行项目时为文本对象分配空间。
如果大幅提高字符数量,也只会发生一次重新分配;如果降低字符数量,也不会进行重新分配,除非减少至少256个字符。就改进效果而言,因为TextMesh Pro使用SDF渲染技术,你可以通过TextMesh Pro得到更好的风格结果,例如:轮廓和阴影。
安装与资源
你在Unity 2018.1及更高版本中点击Window > Package Manager > TextMesh Pro > Install 进行安装。
当你将TextMesh Pro导入项目中时,本文所提到的多数功能可以在示例场景中找到。建议你在使用TextMesh Pro前查看这些场景,因为示例场景的内容会解答你的许多疑问。
在TextMesh Pro中使用富文本指南,请访问:
http://digitalnativestudios.com/textmeshpro/docs/rich-text/
小结
如何在Unity 2018中充分使用TextMesh Pro为大家介绍道这里,希望你能学以致用创造出更加精美的UI。更多Unity功能介绍尽在Unity官方中文论坛(UnityChina.cn) !
推荐阅读
官方通知
Unity将在10月22-26日,举办为期5天的专业的Unity官方教师培训课程,诚邀广大教师与Unity一同学习分享最新技术![了解详情...]
报名地址:
https://connect.unity.com/events/2018jiaoshipeixun
现在访问Unity在线商店(store.unity.com),成功订阅Unity Pro专业版、Unity Plus加强版即可享受全新增值服务组合。11月18日之前订阅,更有指定插件资源限时赠送。[了解详情...]
活动地址:https://store.unity.com/cn
点击“阅读原文”访问Unity官方论坛