Unity TextMeshPro

news2024/11/16 16:28:34

Unity TextMeshPro

简介

TextMeshPro(也简称为TMP)号称是Unity的终极文本解决方案,它是Unity 的 UI 文本和旧版文本网格体的完美替代品。

功能强大且易于使用,使用高级文本渲染技术以及一组自定义着色器;提供实质性的视觉质量改进,同时在文本样式和纹理方面为用户提供令人难以置信的灵活性。

TextMeshPro通过字符,单词,行和段落间距,字距调整,对齐文本,链接,30多种可用的富文本标签,对多字体和精灵的支持,自定义样式等功能,提供了对文本格式和布局的改进控制。

出色的性能。由于 TextMeshPro 创建的几何体与 Unity 的文本组件一样,每个字符使用两个三角形,因此这种改进的视觉质量和灵活性无需额外的性能成本。

这段话是官网的简介,直接翻译过来的Unity - 手册:TestMeshPro (unity3d.com)

需要特别注意的是,Unity官方从2021版本开始,删掉了Text,改成用TextMeshPro作为解决方案,也就是你不能直接创建Text来使用了,当然你可以创建个空物体,然后挂载Text来间接的使用,但用起来不是很方便。

所以还是安安心心学习怎么使用TextMeshPro吧,毕竟功能还是很强大的。

使用说明

属性面板

在这里插入图片描述

相比Text组件多了很多的功能,这里就简单介绍下多的功能。

官方说明文档:UI 文本游戏对象 |文本网格专业版 |3.2.0-4 之前 (unity3d.com)

Enable RTL Editor

启用此选项可从右到左而不是从左到右显示文本。

检查器会显示一个附加的输入字段,您可以在其中查看反转的文本并直接对其进行编辑。

文本在屏幕上显示或呈现之前被反转。

在这里插入图片描述

Material Preset

可以给字体设置材质球,像什么艺术字啥的就可以使用这个来实现。

Font Style

FontStyle变的更加丰富了,是支持多选的。

B粗体,黑体
I斜体
U添加下划线
S添加删除线
ab小写
AB大写
SC字体全部大写,但是本身是大写的字体会更大点

自定义字体

TextMeshPro现在不提供适用于大多数语言的字体了,需要根据自己的需求生成自己所需要的字体。这里就需要使用Unity提供的字体生成工具(Window/TextMeshPro/Font Asset Creator)。

Font Asset Creator

界面:

在这里插入图片描述

属性介绍

字体文件(Source Font File)

选择你想使用的字体文件

Windows的字体文件路径:C:\Windows\Fonts

采样点大小(Sampling Point Size)

字体大小(以磅为单位),用于生成字体纹理。采样点大小越高,渲染质量越好,但占用的图集空间更多。

  • 自动调整大小(Auto Sizing):尽可能使用最大的磅值,同时仍适合纹理上的所有字符。这是 SDF 字体的常规选项。也就说一般我们选这个。

  • 自定义大小(Custom Size):使用自定义磅值实现对仅位图字体的像素精确控制。

填充(Padding)

单位是像素,填充在字体图集纹理中的字符之间。

这个一般使用默认设置就可以了。

打包方式(Packing Method)
  • 最佳(Optimum):找到仍适合纹理中所有字符的最大自动字体大小,使用此选项可生成最终字体纹理。最好选择这种方式。

  • 快(Fast):更快地计算字符打包,但可能使用比最佳模式更小的字体大小。

在测试字体资源创建时使用此选项。

图集分辨率(Atlas Resolution)

字体纹理的宽度和高度(以像素为单位)。

如果仅包含 ASCII 字符,则分辨率对于大多数字体都很好。具有更多字符的字体可能需要更大的分辨率或多个图集。

对于 SDF 字体,分辨率越高,生成的渐变越精细,因此文本质量越高。

实际使用的过程中,需要根据自己使用的文字多少来选择特定的分辨率,分辨率越大,最后生成的字体文件就越大,会影响包体大小,要根据实际情况来进行判定。

字符集设定(Character Set)

字体文件中的字符不会自动包含在字体资源中。您必须指定所需的那些。您可以选择预定义的字符集,提供要包括的字符列表,或包括现有字体资源或文本资产中的所有字符。

ASCII:在 ASCII 字符集中包括可见字符。

扩展ASCII(Extended ASCII):在 ASCII 字符集中包括可见字符。

ASCII 小写(ASCII Lowercase):在 ASCII 字符集中包括可见字符。

ASCII 大写(ASCII Uppercase):仅包含 ASCII 字符集中可见的大写字符。

数字符号(Numbers + Symbols):仅包含 ASCII 字符集中的可见数字和符号。

自定义范围(Cutom Range):包括您定义的字符范围。

输入一系列十进制值或值范围,以指定要包括的字符。  

使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。  

您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`

统一码范围16进制(Unicode Range(hex)):包括您定义的字符范围。

输入一系列十进制值或值范围,以指定要包括的字符。  

使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。  

您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`

自定义字符(Custom Characters):包括您定义的字符范围。

输入一系列十进制值或值范围,以指定要包括的字符。  

使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。  

您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`

文件中的字符(Charaters from File):在指定的文本资源中包含所有字符。

如果要保存字符集,请使用此选项。
渲染方式(Render Mode)

官方介绍:Unity - 手册:字体资源简介 (unity3d.com)

  • SMOOTHSMOOTH_HINTED将文本呈现为抗锯齿位图。SMOOTH_HINTED字符像素与纹理像素对齐,以获得更清晰的图像。
  • RASTERRASTER_HINTE 将文本呈现为非抗锯齿位图。RASTER_HINTE字符像素与纹理像素对齐以获得更清晰的图像。
  • SDFAA:使用此模式可为大多数用例生成字体图集,但当您在具有大轮廓的屏幕上渲染大文本(例如超过 90 磅大小的标题)时除外。SDFAA 是动态或动态操作系统字体资产的默认模式,用于快速生成。SDFAA 是一种速度更快但精度较低的 SDF 生成模式。
  • SDFAA_HINTED使用此模式可将字符像素与纹理像素对齐,以获得更清晰的结果。
  • SDF32:静态字体资源的默认模式。将此模式用于具有复杂字符或小字符的字体。这是一种速度较慢且准确的 SDF 生成模式,具有 32 倍过采样。
  • SDF16:将此模式用于静态字体资源和大部分大文本,例如 72 磅或更大的标题。这是一种速度较慢且准确的 SDF 生成模式,具有 16 倍过采样。
  • SDF8:使用此模式可生成具有 8 倍过采样的更慢、更准确的 SDF
  • SDF:使用此模式生成更慢、更准确的 SDF,而不会过度采样
获取字距调整(Get Kerning Pairs)

从字体复制字距调整数据。

字距调整数据用于调整特定字符对之间的间距,以产生更赏心悦目的结果。

注意:并非总是可以导入字距调整数据。某些字体将字距调整对存储在其字形定位 (GPOS) 表中,这不受支持。其他字体根本不存储字距调整对。

生成

点击生成按钮(Generate Font Atlas),根据不同的情况生成字体的时间不一样,生成完成之后,保存成对应的字体文件即可。

尾语

建议将官方的例子导入工程中学习学习,里面用法特别多,表现效果也比较好。

如果有写的不好的地方,欢迎各种大佬批评指正。

后续有需要会继续补充。
本不存储字距调整对。

生成

点击生成按钮(Generate Font Atlas),根据不同的情况生成字体的时间不一样,生成完成之后,保存成对应的字体文件即可。

尾语

建议将官方的例子导入工程中学习学习,里面用法特别多,表现效果也比较好。

如果有写的不好的地方,欢迎各种大佬批评指正。

后续有需要会继续补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础教程(入门教程),初学者学Python编程如何快速入门?

【导语】Python是一种跨平台的计算机程序设计语言,通过Python编程,我们能够解决现实生活中的很多困难,现如今,我们工作中的许多工作都需要通过编写计算机软件来完成,那么初学者学Python编程如何快速入门呢?下面就来给…

【用Group整理目录结构 Objective-C语言】

一、接下来,我们看另外一个知识点,怎么用Group把这一堆乱七八糟的文件给它整理一下,也算是封装一下吧, 1.这一堆杂乱无章的文件: 那么,哪些类是属于模型呢,哪些类是属于视图呢,哪些类是属于控制器呢, 我们接下来通过Group的方式,来给它们分一下类, 这样看起来就好…

虚拟机安装ubuntu窗口自适应问题以及软件窗口显示不全解决方法

这部分查了很多博客,首先感谢前人栽树。 直接上我在安装过程中的有效解决步骤, 文后会描述遇到的非有效解决步骤,以供遇到相同问题的同学参考。 打开终端窗口 (ctrlaltt),当然肯定是一条一条的执行。 sudo apt-get update sudo apt-get upg…

第三章-OpenCV基础-7-形态学

前置 形态学主要是从图像中提取分量信息,该分量信息通常是图像理解时所使用的最本质的形状特征,对于表达和描绘图像的形状有重要意义。 大体就是通过一系列操作让图像信息中的关键信息更加凸出。同时,形态学的操作都是基于灰度图进行。 相关操作最主要…

Filebeat处理多行换行的问题

问题:在使用filebeatelabscience或者filebeatelk 又或者其他桥接器的时候,因为filbeat默认使用单行显示的原因,但日志出现堆栈错误或其他多行日志时会出现如下错误处理办法:1.固定日志格式 这里不展开说明2.匹配日志 找到你的file…

【Flutter入门到进阶】Flutter基础篇---布局

1 GridView网格布局组件 1.1 说明 1.1.1 图例 1.1.2 说明 GridView网格布局在实际项目中用的也是非常多的,当我们想让可以滚动的元素使用矩阵方式排列的时 候。此时我们可以用网格列表组件GridView实现布局 GridView创建网格列表主要有下面三种方式 1、可以通过Gr…

纳睿雷达在科创板上市:总市值达93亿元,2022年营收约2亿元

3月1日,广东纳睿雷达科技股份有限公司(下称“纳睿雷达”,SH:688522)在科创板上市。本次上市,纳睿雷达的发行价为46.68元/股,发行数量为3866.68万股,募资总额约为18.05亿元。 上市首日&#xff…

关于“腺样体面容”的两大认知误区,你需要了解一下

仅供医学专业人士阅读参考看完不要再中招了!随着父母越来越重视孩子的外表和健康成长,“腺样脸”几乎成为聚会上不可避免的热门话题。在各种交流和讨论中,你经常听到朋友焦虑有点高兴地说:“虽然我的孩子总是张嘴睡觉,…

pandas: 三种算法实现递归分析Excel中各列相关性

目录 前言 目的 思路 代码实现 1. 循环遍历整个SDGs列,两两拿到数据 2. 调用pandas库函数直接进行分析 完整源码 运行效果 总结 前言 博主之前刚刚被学弟邀请参与了2023美赛,这也是第一次正式接触数学建模竞赛,现在已经提交等待结果…

【自动化测试】一位自动化测试工程师居然不会封装框架?神秘自动化测试框架......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 自动化测试框架 自…

02 Android基础--service

02 Android基础--service什么是service?service的demo使用Service的种类前台service的使用背景什么是service? Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。 服务分为两种形式:非绑定状态与绑定状态。 非…

深入Linux内核理解NIO与Epoll

目录 深入Linux内核理解NIO与Epoll IO模型 BIO(Blocking IO) 代码演示: 缺点: BIO总结: NIO(Non Blocking IO) NIO非阻塞代码示例: 使用telnet客户端Debug代码演示: 总结: NIO引入多路复用器Selector的代码演…

Python - 模块、包

模块 什么是模块(module) 是一个Python文件模块包含:函数、类、变量、可执行的代码模块分类: 内置标准模块(又称标准库)第三方开源模块自定义模块 导入模块的方式 几种方式: import [模块名…

git版本控制流程

git在生产中的版本控制流程 git介绍:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 那么git是如何在生产中进行版本控制的? 首先在整个git管理的项目中会分为四个分支 dev(开发分支&…

【Python】元组与集合

一、元组Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可定义空元组print(tuple()) print(())# 元组是一个不可变的序列&am…

【Flutter入门到进阶】Flutter基础篇---基础组件

1 Container容器组件 1.1 属性说明 1.1.1 alignment topCenter:顶部居中对齐 topLeft:顶部左对齐 topRight:顶部右对齐 center:水平垂直居中对齐 centerLeft:垂直居中水平居左对齐 centerRight:垂直居中水…

python自学之《21天学通Python》(17)——第20章 案例1 做一个Windows 上的360工具

Python的语法简洁而清晰,具有丰富和强大的类库及第三方库。它能够很轻松地将各种语言模块联结在一起,所以被称为“胶水”语言。当然,Python也能够方便快捷地编写一些常用的工具程序,而用其他程序设计语言需要编写很复杂的代码来完…

算法训练营 day60 动态规划 回文子串 最长回文子序列

算法训练营 day60 动态规划 回文子串 最长回文子序列 回文子串 647. 回文子串 - 力扣(LeetCode) 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的…

DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

DIY-BETAFPV和DIY(ESP-01FE19-900M20S2模块)915MHz信号测试对比1. 前提条件2. 实测效果2.1 起点附近(距离3m左右)2.2 30m米距离(树梢)2.3 80米距离3. 整体比较4. PCBA分析4.1 DIY-BETAFPV4.2 DIY&#xff0…

node的多版本控制器,nvm,nvm使用,nvm安装

缘起 拿到新项目,第一步当然是启动项目,对于超大型项目,一个npm install 成功与失败,就是五五开。 原因如下: karma1.7.1: wanted: {"node":"0.10 || 0.12 || 4 || 5 || 6 || 7 || 8"} (curren…