Unity的TextMeshPro使用概览

Posted 微飌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity的TextMeshPro使用概览相关的知识,希望对你有一定的参考价值。

一、生成动态字体

1.字体文件:比如windows系统的fonts文件夹中

2.导入unity,create——Text Mesh Pro——Font Asset

3.字体补充:建一个txt文件,收录常用汉字(中文标点符号也要自己处理),导入unity,然后选中生成的SDF字体,更新字体图集

4.选择合适的分辨率,太小会导致字体放大时模糊,选择从文件导入字符,Generate,然后Save

5.测试生成的字体,嘿哈!

二、静态表情

1.TMP支持图文混排,使用sprite标签(如<sprite=1>)默认表情图集在

2.制作字体的表情图集

a.资源图集,切分

b.生成TMP的Sprite Asset

c.修改位置信息

d.修改TMP setting的默认表情图集

也可以在sprite标签中指定图集名称:

<sprite>标签将Sprite Asset中的图片插入到文本中,Sprite Asset必须位于TMP中的指定文件夹TextMeshPro -> Resources -> Sprite Assets中。
<sprite=9>//默认图集+索引

<sprite name="happy"> //默认图集+图名

<sprite="My Sprites" index=9> //指定图集+索引

<sprite="My Sprites" name="happy">//指定图集+图名

三、动态表情

TMP可以再sprite中指定多个属性,anim可以指定播放图集的开始索引,结束索引,播放速率,例如<sprite=1 anim=1,5,10>

5.测试生成的字体,嘿哈!

<sprite=0><sprite=1><sprite=2><sprite=3>

<sprite="emoji" index=0><sprite="emoji" index=1>

<sprite="emoji" anim=0,3,10>

<sprite index=1 anim=1,5,10>

<sprite="EmojiOne" index=1 anim=1,5,5>

四、超链接

<link=”ID”>超链接</link>,需要监听点击事件,做对应处理:

public void OnPointerClick(PointerEventData eventData)

    TMP_Text tmp = GetComponent<TMP_Text>();
    int linkIndex =TMP_TextUtilities.FindIntersectingLink(tmp,eventData.position,null);
    if (linkIndex != -1)
    
        TMP_LinkInfo linkInfo = tmp.textInfo.linkInfo[linkIndex];
        Debug.Log(linkInfo.GetLinkID());
        Application.OpenURL(linkInfo.GetLinkID());
    

五、3D文字

六、性能优化

1.由于TMP导出的字体图集格式是未压缩的,所以对于4096 * 4096的纯Alpha通道来说就是16MB的内存占用,所以考虑对图集进行压缩

2.使用图文混编图片和文字会分别占用一个dc(因为二者使用的材质信息不同)。因此TMP中混编的图片同样要注意不要和字体发生重叠,否则就会打断文本自身的合并处理增加dc。如果有重叠的时候就将带图片的放在上层(貌似同一个组件中图片的层级会默认比文字高),这样文字和文字之间dc仍然是合并的

3.TMP组件支持的外发光,光照,阴影这些特性都是在shader中实现的,如果全开的话势必会增加渲染的开销。建议根据项目情况去选择不同的shader来生成字体,比如插件自己提供的mobile里的shader(mobile里的shader不仅仅是删除了部分功能如光照外发光,本身对外轮廓,阴影的算法也做了简化)

TextMeshPro快速上手

Text Mesh Pro是Unity的新的文本显示对象,最大的优点是放大以后不会有锯齿,而且有更多的显示效果。缺点是需要配置才能使用,不像原来的直接就可以用。

官方资源

http://digitalnativestudios.com/textmeshpro/docs/
https://docs.unity3d.com/Packages/com.unity.textmeshpro@3.0/manual/index.html
https://docs.unity3d.com/Packages/com.unity.textmeshpro@3.0/api/index.html

基本配置

Text Mesh Pro第一次使用前需要配置。当然,第一次在场景中添加的时候会提示导入配置资源。

导入配置

导入示例

第一次使用建议导入示例看下。

默认设置修改

字体资源

导入字体以后,需要添加字体资源才能在Text Mesh Pro中使用对应的字体

生成字体资源

常用设置

字体资源动态、静态设置

默认动态即可,静态需要配置字符,静态可以减少内存占用。

图集大小

图集大小设置和输入的字符多少有关。当动态字体输入时候不显示文字,需要增大图集。

后备字体

当前字体中没有对应的字符的时候,会查找后备字体

字体粗细自动切换

可以设置不同粗细的字体,自动切换。如果其他粗细的字体仅用于少数地方,不如单独使用,例如仅在开始菜单使用的标题,反而是单独生成粗体字的字体资源来用。

静态字体设置图集

入口

字符输入方式

输入保存

精灵字体(表情图片)

精灵字体在一些场合非常好用,不过不受材质影响

生成

创建字体资源

重命名

输入

调整偏移量

Text Mesh Pro文本显示常用设置

常用的设置包括字体颜色,字体渐变色(仅垂直双色渐变,水平双色渐变,四角四色渐变),字体渐变色可以设置为资源重复使用。字体富文本,字体副文本还可以变成样式重复使用。

材质

Text Mesh Pro可以设置材质,其中,表面,阴影,边框,外发光和模拟3D效果,接受真实光照都是通过材质实现。

材质使用保留原有材质不变,复制后修改新的材质。

默认为Distance Field,在需要真实光照效果的时候使用Distance Field Surface,Distance Field Overlay和Distance Field SSD不太清楚,好像是在模型3D效果的时候表现不同。另外,Mobile下的项目更少,性能更好。

脚本

使用需要引入命名空间

using TMPro;

画布下的文本框用是

TMP_Text

不在画布下的是

TextMeshPro

说明视频:

TextMeshPro使用快速上手

以上是关于Unity的TextMeshPro使用概览的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 UGUI TextMeshPro控件详解

Unity-TextMeshPro

Unity TextMeshPro 一键生成工具

TextMeshPro快速上手

TextMeshPro快速上手

unity 图文混排 textMeshPro