【Unity学习笔记】TextMeshPro文档(一)

本人英语渣渣翻译,稍微删减了些自认为可以忽视的部分,原文地址 http://digitalnativestudios.com/textmeshpro/docs/textmeshpro-component/

Text Objects

提供了两个TextMesh Pro物体,一个用于Unity UI,另一个是用于3D场景。二者功能大体相同,但也有少许区别。本文使用用于UI那个来描述功能,也会指出二者的不同。

1 Text Objects

你可以通过GameObject>UI>Text-TextMeshPro来添加该UI物体。和其它UI物体一样,这个新物体也有Transform和Canvas Renderer组件,然后你就可以通过Text Mesh Pro组件来管理文本,你也可以将此组件添加到其它游戏物体中,它会自动的添加必要的属性。
【Unity学习笔记】TextMeshPro文档(一)_第1张图片

1.1 UI Material

在Inspector面板也能看到渲染文本所用的material。通常情况下,UI物体是不会用这方式显示它们的material的,因为它们没有Mesh Renderer组件。在这里,它实际是inspector面板的一部分。如果你给这个物体添加更多的组件,它们会显示到material的下面,除非你改变它们的排序。(但是我没看到这种现象,可能版本更新了?)

通过这个material可以很方便的访问文本的材质。但是,它不允许UI物体的Material属性设置动画,这是Unity的UI解决方案的限制。

1.2 3D Text Object

3D物体通过GameObject>3D Object>Text-TextMeshPro来创建。创建的文本是平的,看起来就和UI文本一样。但是它是单独存在于游戏场景中的,而不是Canvas的子物体。(它和3D游戏物体一样,可以在3D空间中旋转缩放移动)
【Unity学习笔记】TextMeshPro文档(一)_第2张图片
在这里,该物体有它自己的Mesh Renderer组件,Material属性也被显示得很好,并且material属性可以动画化。另外,尽管它是3D物体,但依然使用的是Rect Transform组件。

2 Text Input Box

文本输入框是用来输入文字的
【Unity学习笔记】TextMeshPro文档(一)_第3张图片

2.1Right-to-left Mode

你可以勾选Enable RTL Editor单选框转换为从右到左的文本排列方式(相当于把字符的显示顺序颠倒,abc显示为cba),文本在显示前会将字符顺序颠倒过来。勾选后,Inspector面板上会多出一个RTL Text Input输入框,可以直接编辑已经反顺序的文字。
【Unity学习笔记】TextMeshPro文档(一)_第4张图片
RTL模式仅仅是反转文本顺序,其它不变。

3 Main Settings

关于字体、字体风格、对齐方式等的设置
【Unity学习笔记】TextMeshPro文档(一)_第5张图片

3.1 Font Asset在这里插入图片描述

TextMesh Pro使用它自己的字体资产(Font Asset),你可以通过Font Asset Creator面板进行创建。默认使用的是LiberationSans SDF。

3.2 Material Preset

【Unity学习笔记】TextMeshPro文档(一)_第6张图片

材质预设。每个字体资产都有默认的材质,你也可以为它创建自定义的材质。你可以使用这个下拉列表快速切换。

这个列表中的材质是通过搜索 名称中包含对应字体名字并且使用对应的字体图集纹理的材质 添加的。

3.3 Font Style在这里插入图片描述

有七种字体风格供你选择。如果你想让其中部分文字效果不同,可以使用富文本(rich text)标签

前俩选项是粗体和斜体,它们的外观依赖字体资产(Font Asset)。

接着那俩是underlie和strikethrough表示下划线和删除线,效果就是在字体下面或者中间加一条横线。

最后三是用来设置字母大小写的,功能分别是:小写,大写,和小写字母尺寸一样大的大写

前四个可以随意选择,最后三同一时刻只能选一个。

3.4 Font Size

在这里插入图片描述
font size决定字符的大小,你可以使用固定大小,也可以使用自适应大小。

当auto size勾选时,可以指定字符的最小和最大值。Text Mesh Pro将会自动计算,找到最适合的大小,确定的大小会显示在Font Size输入框中。

WD%
WD%包含一个百分比值,表示控制最大的字符的宽度减少百分比。这会水平的挤压字符,使它们更高,通常只适用于数字。

你还可以通过修改Line来减少行高从而适应更大的字体大小。

当勾选了auto size,会花很多时间去计算字符合适的大小。所以只在必要的时候勾选它,并且要避免对频繁改变的动态文字使用此项。如果你的文本从不改变,你可以勾选此项,记住计算出的字体大小,然后取消勾选,并手动填入刚刚计算出的值。

3.5 Vertex Color

【Unity学习笔记】TextMeshPro文档(一)_第7张图片【Unity学习笔记】TextMeshPro文档(一)_第8张图片
Vertex Color用于为文本着色。除了使用统一颜色外,你也可以勾选Color Gradien从而对文本使用颜色渐变。(通过Color Mode,我们可以切换渐变颜色的个数)Four Corners Gradient表示为每个字符的四个角各选择一个颜色,然后进行渐变。可以为每个TextMesh Pro物体单独手动设置,也可以通过指定gradient preset来快速设置。

这里的渐变颜色会与前面的Vertex Color相乘,所以如果想看原始渐变,就让Vertex Color颜色为白色。

如果勾选了override tags,那么rich text的颜色会被忽视。

3.6 Spacing Options

在这里插入图片描述
字符之间、单词之间、行之间、段落之间的间距都可以修改。段落由换行符确定。你可以为每个TextMesh Pro单独设置,而不用调整字体资产(Font Asset)。

这些设置也可以通过富文本(rich text)修改。

3.7 Alignment

在这里插入图片描述
文本对齐方式,分成了水平和垂直两组。

3.7.1 Horizontal

水平方向有四种对齐方式(实际上现在有六种),left、center、right模式控制行的对齐方式。不会改变行的内容,只改变行的位置。下面三图分别是lefr、center、right
【Unity学习笔记】TextMeshPro文档(一)_第9张图片
【Unity学习笔记】TextMeshPro文档(一)_第10张图片
【Unity学习笔记】TextMeshPro文档(一)_第11张图片
justify模式不会拉伸字符,而是会修改字符之间和单词之间的距离,从而让字符填充一整行。Wrap Mix的滑动条控制额外间距的比例。(要超过一行才能看到效果)
在这里插入图片描述

3.7.2 Vertical

垂直方向上一共有六种对齐方式,其中前三种Top、Middle、Bottom类似前面横向对齐方式的前三个,只不过是垂直的。

第四个方式是baseline,它会调整内容的位置,从而让文本的第一行的基准线(应该是下划线位置)对齐文本显示区域的中间。

第五个方式是midlie,它像是中线对齐,但是使用的是文本的网格边界来确定垂直位置,而不是行度量。“这在空间狭小的情况下很有用,否则上升和下降会延伸得太远。(百度翻译)”

最后一个方式是capline,它和baseline方式差不多,只不过是用文本第一行的中间对齐文本显示区域的中间。

3.8 Wrapping & Overflow

当Wrapping设为Enabled,这可以确保文字不会显示到文本显示区域的外面(就是自动换行嘛)。对于单词也会正常换行,除非一个单词的就已经比一行的宽度要长。

overflow属性决定文本比显示区域长的情况。overflow模式表示文本会延申到显示区域外面。Elipsis模式会把显示区域外的文字裁切掉(不显示)并在显示区域内文字末尾加上三个点…来表示有文字省略了。Truncate模式就是简单的把显示区域外卖的文字裁切掉。下图分别时Overflow、Ellipsis和truncate的图示:
【Unity学习笔记】TextMeshPro文档(一)_第12张图片
【Unity学习笔记】TextMeshPro文档(一)_第13张图片
【Unity学习笔记】TextMeshPro文档(一)_第14张图片
Page模式会将文本划分为几页,你可以选择要显示哪一页。由于页面是单独显示的,所以垂直对齐按每页进行。也可以使用富文本手动插入分页符
在这里插入图片描述
Masking模式将会将文本按类似overflow的方式渲染,但是所有在显示区域外的文字会被shader隐藏,这只对UI物体有效,对3D物体无效。
Scroll Rect也有类似的用途,但不推荐使用。

3.9 UV Mapping

可以使用支持其他纹理的着色器将图像映射到文本顶部。UV映射选项控制纹理在文本上拉伸的方式。每个维度(横、竖)可以使用不同的设置。左侧选项用于X标注,右侧选项用于Y标注。
纹理的wrap模式需要设置为repear,否则将无法正确显示。

Character模式会在每个字符的sprite上面拉伸纹理,因此每个字符显示相同的图像,根据其自身的纵横比拉伸。
【Unity学习笔记】TextMeshPro文档(一)_第15张图片
Line模式会拉伸纹理到一行的整个宽度和高度。
【Unity学习笔记】TextMeshPro文档(一)_第16张图片
Paragraph会拉伸纹理到整个文本。
【Unity学习笔记】TextMeshPro文档(一)_第17张图片
Match Aspect 确保在一个维度去缩放纹理从而保持原始比例。这样可以确保纹理不会变形,纹理的映射由另一个维度控制,所以你不能将俩维度都设置为Match Aspect。
【Unity学习笔记】TextMeshPro文档(一)_第18张图片

UV偏移可用于调整纹理在X和Y维度上的相对位置。当这些偏移被添加到纹理坐标时,要在视觉上正向移动纹理,必须应用负偏移。

还有一个行偏移量,当使用行或段落映射时,它会添加到每个连续行的X偏移量中。你可以使用这个倾斜纹理。
(百度翻译,太困了,今天到此为止)

【Unity学习笔记】TextMeshPro文档(一)_第19张图片

3.10 Kerning and Padding

(这一项现在已经被搬到了Extra Setting里面)

Kerning控制是否使用字体的kerning data。这对没有kerning data的字体无效。
Extra padding最小化用于渲染字符的sprites的大小。创建几何体是为了适应可见文本,但这并不总是完美的。为精灵添加额外的填充,以防止字形在精灵的边界处被切断。

4 Extra Settings

这一部分包含一些杂项设置。
【Unity学习笔记】TextMeshPro文档(一)_第20张图片
Margins值可以用于在文本和显示区域边界之间添加空隙。你可以设置负值,使得文字超出容器边界。你也可以在场景中通过拖动黄色矩形边上的白色小方块来调整。
【Unity学习笔记】TextMeshPro文档(一)_第21张图片
富文本(Rich text)默认是开启的,你想关就关。如果关了,富文本的标签就会作为文字显示出来。

对于raycast target,如果关了,UI就会忽视鼠标和文本的交互。

当Parse Escape Character开启时,就会将带有反斜杠的字符转换为特定的字符。比如\n转化为换行,\t转换为制表符,等等。注意:这是指实际的文本,比如用户的驶入。在代码中,早就被编译器转化好了。

可以通过脚本去限制文本的可见字符数,这可以用于慢慢显示文本。让Visible Descender和垂直对齐方式的bottom结合使用。当启用此项时,文本显示在底部并动态随着行数的增加而往上推,当不启用时,文本是从上往下显示。(我没太懂最后这句话的意思,因为按照我的理解,好像勾不勾选此项没啥区别。)

4.1 3D Text Object

对于3D物体来说,有一丢丢不同、它没有margins和raycast-target设置。(同时多了一些设置)
【Unity学习笔记】TextMeshPro文档(一)_第22张图片
Sorting Layer 和Order in Layer用于对物体的渲染顺序进行微调。

Orthographic mode should be enabled when using camera-aligned text with an orthographic camera. It instructs the shader to not use any perspective correction.

Orthographic模式在要让文本对齐正交摄像机时使用,它要求shader不适用任何透视矫正(因为不是很确定,就把原文放在上面)。

“默认情况下,四边形用于显示字符。启用的体积设置将激活另一种模式,在这种模式下,将使用立方体。这允许体积角色渲染,但目前没有着色器支持此功能。(百度翻译,现在似乎取消了该项?)”

5 Text Container

UI text物体使用UI Canvas确定它的位置和大小,这是通过RectTransform组件控制的。
虽然3D text物体也有RectTransform组件,它并没有访问canvas的布局系统,相反,它有自己的容器组件(先版本默认情况下已经看不到这个组件了)。

你可能感兴趣的:(Unity学习笔记,unity)