Unity插件之TextMeshPro 6.富文本

96
erick_book
2019.03.21 00:20 字数 2653

Unity插件之TextMeshPro 6.富文本

简介

通过富文本标签可以更改文本的外观和布局,实现多种样式的结合,使文本内容看起来更加丰富,还可以插入图素,制作图文混排,这些标签类似于HTML或XML,但语法又不是那么严格。此文章将重点介绍可以在TextMeshPro中使用的标签,虽然此文中列出了很多标签,但是在实际的实用中,经常使用的标签数量就只有几种而已。

声明

本文中的内容属于个人总结整理而来,个人水平有限,对于部分细节难免有理解错误及遗漏之处,如果您在阅读过程中有所发现,希望您能指正,同时文章中的部分内容也参考了其它大神的文章,如果文章中的内容侵犯了您的权益,表示非常歉意,请您指出,我将尽快修改。

如果您进行转载,请标明出处。
Unity插件之TextMeshPro 6.富文本(http://www.liyubin.com/articles/2019/03/19/1552973981025.html)

TextMeshPro富文本标签

标签看起来像是<tag>开始,如果需要关闭标签时使用</tag>,标签可以嵌套着使用,多个相同的标签使用时,往往是最后一个标签会生效,某些标签具有值和属性,类似于<tag = >、<tag attribute=vaue>,这些参数可以名称或者数值。数字是十进制或者十六进制,像素1px,百分比80%,字体单位1.2em,可以带有双引号也可以不带,有很多属性时最好使用。

推荐:虽然关闭标签不是必须的,还是推荐严格的添加关闭标签,对于排查错误会有不小的帮助

  • Text Alignment(文本对齐标签) -> align

    每个文本都有一个整体的对齐方式,但是可以使用标签覆盖掉,从而重新设置文本对方方式。此标记通常放在段落的开始,如果同一行上有多个对齐标签,则最后一个会生效,其它的会被忽略。

    <align="right">Right
    <align="center">Center
    <align="left">Left
    

    显示效果为:

    Text Alignment
  • Colr(颜色标签) -> color alpha

    文本默认可以设置整体的颜色,也可以使用标签设置整个文本或者文本中某些部分为其它的颜色。目前提供了两个标签可以对颜色产生影响

    • color

      TextMeshPro内置了部分颜色值,可以通过名称直接使用其值,颜色值有:

      • 黑色-black
      • 蓝色-blue
      • 绿色-green
      • 橙色-orange
      • 紫色-purple
      • 红色-red
      • 白色-white
      • 黄色-yellow

      内置的颜色值有限,如果想设置其它的颜色可以直接使用十六进制进行设置如:#FFFFFF,如果想修改alpha值可以使用#FFFFFFFF,

      <color="red">Red <color=#005500>Dark Green <#0000FF>Blue <color=#FF000088>Semitransparent Red
      

      显示效果为:

      Text Color
    • alpha

      如果只是需要修改文本的透明度,由可以只使用alpha标签,同样是使用十六进制表示的。

      <alpha=#FF>FF <alpha=#CC>CC <alpha=#AA>AA <alpha=#88>88<alpha=#66>66 <alpha=#44>44 <alpha=#22>22 <alpha=#00>00
      

      显示效果为:

      Text Alpha

    PS:如果需要恢复默认的显示颜色,只要加上结束标签即可,即:</color>或者</alpha>,使用一次结束标签会将颜色设置为之前的颜色值

  • Bold and Italic(粗体与斜体) -> b i

    使用b标签可以将文本加粗

    使用i标签可以将文本变为斜体

    The <i>quick brown fox</i>
    jumps over <b> The lazy dog</b>.
    

    显示效果为:

    Bold And Italic
  • Character Spacing(字符间距) -> cspace

    通过使得cspace标签可以调整字符间距,无论是绝对的还是相对于原始字体的。可以以像素或者字体单位(em),设置正数将会加大字符间距,使用负数会减小字符间距,使用结束符可以让文本间距恢复到正常

    <cspace=1em>Spacing</cspace> is just as important as <cspace=-0.5em>timing.
    

    显示效果为:

    cspace
  • Font(字体标签) -> font

    可以font标签切换使用不同的字体,新字体会被一直使用,直到遇到新的字体标签或者关闭标签,字体与材质必须放到指定的目录中,同时必须提前做好相应的配置

    Would you like <font="Impact SDF">a different font?</font> or just <font="NotoSans" material="NotoSans Outline">a different material?
    

    显示效果为:

    Font
  • Indentation(缩进标签) -> indent

    通过indent标签可以设置缩进,可以使用像素、百分比、字体单位为其值。在遇到新的缩进标签或者结束标签前,缩进标签的效果会一直存在,即使是跨行后效果依然会存在

    1. <indent=15%>It is useful for things like bullet points.</indent>
    
    2. <indent=15%>It is handy.
    

    显示效果为:

    Indent
  • Line Height(行高标签) -> line-height

    通过line-height可以在不用修改字体的情况下,设置高度可以使用行与行之间离的更近或者更远,其值可以是像素值、字体单位、百分比

    Line height at 100%
    <line-height=50%>Line height at 50%
    <line-height=100%>Rather cozy.
    <line-height=150%>Line height at 150%
    Such distance!
    

    显示效果为:

    Line Height
  • Line-Indent(行缩进标签) -> line-indent

    一般用在每一行的开始位置,指示此行将缩进,此标签只影响手动换行,不影响使用文字转义换行

    <line-indent=15%>This is the first line of this text example.
    This is the second line of the same text.
    

    显示效果为:

    Line Indent
  • Text Link(超链接标签) -> link

    通过使用link标签可以为文本段添加链接数据,格式为<link="ID">,链接中的ID值应当是唯一的,这样才能在交互时才能知道是哪个链接发生了交互

    不需要给每个链接一个唯一ID,当链接到相同的数据多次时,可以使用同一个ID。link标签虽然允许与用户交互,但是它本身并不会改变文本的外观,一般情况下为了标识清楚,多数会设置样式带有下划线

  • Lowercase,Uppercase,and Smallcaps(大写、小写与小大写标签) -> lowercase uppercase smallcaps

    更改文本大小写样式。

    <lowercase>Alice and Bob watched TV.</lowercase>
    <uppercase>Alice and Bob watched TV.</uppercase>
    <smallcaps>Alice and Bob watched TV.</smallcaps>
    

    显示效果为:

    Lowercase,Uppercase,and Smallcaps
  • Margin(边距标签) -> margin

    使用margin标签可以调整文本的水平边距

    Our margins used to be very wide.
    <margin=5em>But those days are long gone.
    

    显示效果为:

    margin
  • Mark(标记标签) -> mark

    使用mark标签可以在文本的上层添加一个覆盖,以突出显示这部分文本内容。由于mark标记是在文本上层的,所以一般情况下需要一定的透明度,才能看到底下的文本

    Text <mark=#ffff00aa>can be marked \nwith</mark> an overlay.
    

    显示效果为:

    Mark Text
  • MonoSpacing(??) -> mspace

    使用mspace可以所有的字符转换为等宽的字体

    Any font can become<mspace=2.75em> monospace, if you really want it.
    

    显示效果为:

    monospace
  • Noparse(禁用富文本标签) -> noparse

    某些时候并不希望文本被解释为标记文本,如果想禁用标记则可以使用noparse

    Use <noparse><b></noparse> for <b>bold</b> text.
    

    显示效果:

    Noparse
  • Non-breaking Spaces(字词不破坏标签) -> nobr

    对单词往往希望字符保持在一起而不是被自动换行分隔,此时可以使用nobr标签

    You don't want <nobr>I M P O R T A N T</nobr> things to be broken up.
    

    显示效果为:

    stay together
  • Page Break(分页标签) -> page

    可以使用page标签在文本中插入分页符,将文本分成几个部分,使用些标签前提是文本框属性使用overflow同时设置为page模式

  • Horizontal Position(水平位置标签) -> pos

  • FontSize(字号标签) -> size

    使用size标签可以随时调整字体的大小,可以像素、字体单位或百分比,使用像素调整可以是绝对的也可以是相对的,例如:+1和-1

    <size=100%>Echo <size=80%>Echo <size=60%>Echo <size=40%>Echo<size=20%>Echo
    

    显示效果为:

    Adjusting size
  • Horizontal Space(水平间距标签) -> space

    使用space标签可以在水平方向中添加一个偏移,就像是添加了多个空格一样。可以使用像素、字体单位或百分比设置

    Give me some <space=5em> space.
    

    显示效果为:

    space
  • Sprite(精灵标签) -> sprite

    使用sprite标签可以将图集中的图素添加到文本中,格式为按索引<sprite index=1>或者按名称<sprite name="spriteName">,此标签是不需要结束符,对于Sprite需要提交在配置中定义

    默认情况下精灵不受文本顶点颜色的影响,如果需要影响Sprite则需要添加tint=1属性,可以使用color属性为sprite添加其它颜色

    Sprites! <sprite=0> More sprites! <sprite index=3> And even more! <sprite name="Default Sprite Asset_4" color=#55FF55FF>
    

    显示效果为:

    sprite
  • Strikethrough and Underline(删除线与下划线标签) -> s u

    可以使用s标签添加删除线,使用u标签添加下划线

    The <s>quick brown</s> fox jumps over <u>the lazy dog</u>
    

    显示效果为:

    Strikethrough and Underline
  • Style(样式标签) -> style

    可以通过style标签自定义样式,不过定义时需要指定样式的名称。

      <style="Title">Styles</style>
      You can create your own.
    

    显示效果为:

    Style
  • Subscript and Superscript(上标与下标标签) -> sup sub

    使用sup可以添加上角标,使用sub可以添加下角标。角标具体显示位置可以在字体中定义

    We have 1m<sup>3</sup> of H<sub>2</sub>O.
    

    显示效果为:

    Subscript and Superscript
  • Vertical Offset(垂直偏移标签) -> voffset

    使用voffset可以使用文本基于baseline在垂直方向上产生偏移

    Up <voffset=1em>up <voffset=2em>UP</voffset> and <voffset=-0.5em>down</voffset> we go again.
    

    显示效果为:

    Vertical offset
  • Text Width(文本宽度标签) -> width

    使用width标签,可以在文本内调整文本区域水平大小,但不能超出文本对象原始的大小

    I remember when we had lots of space for text.
    <width=60%>But those days are long gone.
    

    显示效果为:

    Text Width

参考资料

Unity插件之TextMeshPro