·来源于唐老狮的视频教学,仅作记录和感悟记录,方便日后复习或者查找


一.导入TextMeshPro

对于新创建的工程,可以直接在这里导入TMP必要的资源(上面),以及TMP的实例和扩展(下面)

导入之后如果要更新版本,可以去PackageManager中搜索,可以更新的话右上角会有一个更新的按钮的(我这里已经点击更新到最新版本了,所以没有了)


二.UI文本控件

在层级窗口中右键UI中可以直接找到TMP文本控件并创建,它本身和老的Text控件很像,都是用来显示文本的控件

1.参数设置

1.1.文本输入与字体设置

  • Text Input:输入什么文本,控件上就会显示什么文本
  • Enable RTL Editor:输入的文本会反向显示出来(本来从左到右,勾选之后显示顺序是从右到左)
  • Text Style:选择文本提前在样式表中设定好的样式
  • Font Asset:字体资源。选用不同的字体资源能够让控件显示的文本样式和字符范围不同
  • Material Preset:字体的材质
  • Font Style:B调节字符加粗,I斜体,U下划线,S删除线,ab全部小写,AB全部大写,SC大写文本但是以实际输入的字母大小显示
  • Font Size:字体大小
  • Auto Size:根据文本框大小自动调节字体大小。下方可以调节最大最小字体

1.2.文本颜色设置

  • Vertex Color:顶点颜色。看成是字体颜色就好了
  • Color Gradient:勾选后会给字体添加颜色渐变效果
  • Color Preset:颜色渐变的预设
  • Color  Mode:Single和顶点颜色叠加,Horizontal Gradient横向渐变,Vertical纵向渐变,Four Corners Gradient四角渐变
  • Override Tags:是否忽略富文本标签设定的颜色(一般不用勾选)

1.3.文本布局设置

Spaceing Options(em):字符间隔设置

  • Character:单个字符之间的间距
  • Word:每个单词之间的间距(空格来判断是否为单词)
  • Line:每行之间的间隔(包含自动换行)
  • Paragraph:每个段落的间隔(不包含自动换行,以回车来判断)

Alignment:对齐方式

  • 左/中/右对对齐;左平齐(增加单词和字符之间的间距填满每一行 最后一行不会拉伸/同上,最后一行会拉伸),以网格居中对齐
  • 顶部 /中部/底部对齐,基线对齐/中线对齐/卡普赖恩对齐(使第一行中间与 显示区域的中间对齐)

1.4.文本自动换行与溢出设置

Warpping:决定是否启动自动换行

Overflow:对于溢出的字符如何处理

  • Overflow/Masking/:不管,就让他溢出了
  • Ellipsis:溢出的地方标记省略号
  • Truncate:直接截断
  • Scroll Rect:滚动矩形 此选项仅用于与较旧的 TextMesh Pro 项目兼容。对于新项目,请改用遮罩模式
  • Page:翻页模式。注意要搭配自动换行来使用。
  • Link:连接其他文本控件以显示溢出的内容。

1.5.UV映射调整设置

Horizontal Mapping: 水平映射

Vertical Mapping: 垂直映射

Line Offset: 设置为 线段、段落、匹配模式时,会出现该参数 用于控制偏移位置

1.6.其他额外参数

  • Margins:页边。设定当前文本和文本框四周的间隔距离
  • Geometry Sorting:几何排序。Normal就是离摄像机近先渲染,Reverse就是离摄像机远先渲染
  • Is Scale Static:告诉TMP文本系统该文本不会发生缩放相关变化 TMP会跳过与缩放相关的计算,从而减少CPU和GPU的负担,提升性能
  • Rich Text:是否支持富文本
  • Raycast Target:是否会被点击
  • Maskable:是否会被遮罩
  • Parse Escape Characters:是否使用转义字符
  • Visible Descender:可见下降 使用脚本缓慢显示文本时,启用该选项 启用它可现实底部文本,并在显示新行时向上移动 需要把垂直对齐改为Bottom下部对齐
  • Sprite Asset:Sprite 资源 允许文本中嵌入精灵2D图片,用于处理图文混排时很重要 比如嵌入表情符号等等
  • Style Sheet Asset:管理和应用文本样式,使文本格式更加高效和统一 TMP_Style Sheet文件可以定义多种文本样式,并在多个文本组件中重复使用,确保一致性
  • Kerning:自动调整字符间距,提高文本可读性和美感
  • Extra Padding:额外填充 为文本的边界添加额外填充,避免文本与边界过于靠近,提升视觉效果

2.脚本控制

2.1.脚本获取UI文本控件

1.需要引用TMP命名空间 TMPPro

2.TMP UI组件名为 TextMeshProUGUI

2.2.TMP常用的属性

 //1.文本内容//text;tmpUIText.text = "123123adfasdklf545454564654654646454564654132156465424";//2.字体//font//tmpUIText.font//3.字体大小//fontSize//tmpUIText.fontSize = 10;//4.颜色//colortmpUIText.color = Color.black;//5.对齐方式//alignmenttmpUIText.alignment = TextAlignmentOptions.Center;//6.行间距//lineSpacingtmpUIText.lineSpacing = 50;//7.是否启用富文本//richText;tmpUIText.richText = false;

2.3.TMP常用的方法

 //1.设置文本内容,支持富文本格式//SetText("<color=blue>Hello, World!</color>");tmpUIText.SetText("123123123123123");//2.强制重新构建文本网格,通常在文本内容或样式更改后使用//  Prelayout          布局前调用//  Layout             布局时调用//  PostLayout         布局后调用//  PreRender          渲染前调用//  LatePreRender      渲染后调用//  MaxUpdateValue     最后调用//Rebuild(UnityEngine.UI.CanvasUpdate.LatePreRender);tmpUIText.Rebuild(UnityEngine.UI.CanvasUpdate.Prelayout);//3.强制更新文本网格,运行时动态更改文本时//ForceMeshUpdate();tmpUIText.ForceMeshUpdate();//4.获取文本中字符数//text.Length;print(tmpUIText.text.Length);

2.4.事件监听

通过添加Event Trigger组件后,选择对应要监听的事件,并提供相应的函数即可

具体关于Event Trigger怎么使用可以回顾之前的笔记:UGUI学习--进阶--EventTrigger事件触发器与RectTransformUtility

2.5.更多API

https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/api/TMPro.TextMeshProUGUI.html

去官方手册中查看


三.3D文本控件

3D文本控件和UI文本控件差不多,只是它是可以当成是一个被渲染显示在场景上的3D物体,而不是一个UI。

可以在层级视图中右键后在3D Object中找到并创建出来

3D文本和UI文本的区别

1.组件不同

  •  3D:TextMeshPro
  •  UI:TextMeshProUGUI

2.用途不同

  • 3D:主要用于在3D场景中显示文字
  • UI:主要用于在UI中显示文字,具备UI相关的一些属性

3.渲染方式

  • 3D:直接渲染在场景上
  • UI:通过UGUI的Canvas系统渲染

4.交互方式

  • 3D:一般通关添加碰撞器进行碰撞检测判断交互
  • UI:一般利用UI系统的交互规则,比如EventTrigger

如何选择?

  • 文本需要与3D场景交互需要在3D场景上显示,选择3D文本 TextMeshPro, 就把他当成3D物体处理即可
  • 文本需要在UI系统中使用,选择 TextMeshProUGUI, 把它当成UI组件使用即可

参数和脚本控制与UI文本控件差不多的

更多API可以去官网看:https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/api/TMPro.TextMeshPro.html


四.字体资源相关

1.创建一个字体资源

我们可以去电脑上随便找一个字体(后缀为 .ttf .otf 格式的文件),拖入到工程中

一般拖进来之后,我们放置在这个文件夹下面

选中字体,右键后按如图点击即可创建一个对应的字体资源了

创建好的字体资源,我们一般移动到这个文件夹下面

2.字体资源的参数设置

2.0.字体资源生成窗口

如果需要用到的字符已经提前知道并固定了,就可以用这种。或者有的艺术字需要专门用一个资源

  • Sources Font File:用于生成资源的字体
  • Sampling Point Size:采样点大小 设置用于生成字体纹理的字体大小(以磅为单位)
  • Padding:生成的纹理中字符的间距(一般不用改它)
  • Packing Method:包装方式 如何在字体纹理中调整字体布局
  • Atlas Resolution:图集分辨率 如果只有ASCII字符,用512*512即可中文字体时,需要更大更多的图集。(比如1024*1024)
  • Character Set:字符集 确定想要生成字体纹理的字符集
  • Select Font Asset:选择对应的字体资源
  • Character Sequence:当选择需要自己输入字体的的相关模式时,会出现
  • Render Mode:渲染模式(一般用SDF效果是最好的,SMOOTH其次,位图渲染最差
  • Get Kerning Pairs:用于在字体资源中获取字偶间距调整(Kerning)对。字偶间距调整是指根据相邻字符的组合来调整它们之间的间距,以实现更好的视觉效果和可读性
  • Generate Font Atlas:生成字体图集
  • Save:保存图集
  • Save as...:另存为

2.1.基础信息设置

Scale:缩放 对字体进行缩放,1为原始大小,不缩放

Line Height:行高。表示每行文本的高度,通常是基于最大字形的高度计算的

Ascent Line: 上升线 字形中最高的点到基线的垂直距离。表示子母中最高部分(大写字母或某字符的上部)的位置 控制字形可以延伸到基线上方的最大距离。 它对应了线条的顶部

Cap Line:大写字母线 表示所有大写字母的顶部所处的水平线,通常略低于上升线 控制基线与大写字形顶部之间的距离

Mean Line:中线 表示小写字母的顶部所处的水平线,表示小写字母的标准高度 圆角字形的顶部有时会略高于中线

BaseLine:基线 所有字母字符所处的水平线,大多数字符都在这条线的上方,除了下延字符(g、y、q等) 控制基线的高度 基线是字符所在的水平线

Descent Line:下行线 字形中最低的点到基线的垂直距离,表示子母中最低部分的水平线(比如字母 g 的底部) 控制字形可以延伸到基线以下的最大距离

Underline Offset:下划线偏移 下划线相对基线的位置

Underline Thickness:下划线粗细 控制下划线的粗细

Strikethrough Offset:删除线偏移 控制删除线相对于基线的位置

Superscript Offset:上标偏移量 使上标文本相对基线偏移

Superscript Size:上标大小 相对于正常字体大小缩放上标文本

Subscript Offset:下表偏移量 是下表文本相对基线偏移

Subscript Size:下表大小 相对于正常字体大小缩放下表文本

Tab Width:指定TAB字符的宽度

2.2.生成设置 和 图集纹理

主要用来设置字体资源使用的纹理是动态生成的还是静态生成

Source Font File: 字体文件

Atlas Population Mode: 纹理图集生成方式

Atlas Render Mode:字体渲染模式(和之前在资源生成窗口中的差不多,不记得了可以划上去看)

Sampling Point Size:采样点大小 设置用于生成字体纹理的字体大小(以磅为单位)(动态生成的时候有用)

Padding:填充 指定字体纹理中字符之间的间距(以像素为单位) 填充越大,过渡越平滑

Atlas Width:图集宽

Atlas Height:图集高

Multi Atlas Textures:是否采用多图纹理 允许在字体资源中生成多个纹理图集(Atlas),而不仅仅是一个。这样可以更灵活地管理不同字符集或不同字体样式 提高性能和内存使用效率,尤其是在需要渲染大量不同字符的情况下建议使用

Clear Dynamic Data On Build: 在构建时清除动态生成的数据 这意味着如果你选择了动态字体模式,构建时会移除不再需要的动态字符数据,以节省内存 可以减少最终构建包的大小,确保只包含必要的字符数据

Font Atlas:生成字符资源时创建的字体纹理图集

Font Material:生成字体资源时创建的字体材质

2.3.字体粗细

Normal Weight:正常粗细 没有字体资源用时使用的常规字体粗细

Bold Weight:粗体粗细 没有字体资源用时使用的粗体字体粗细

Spacing Offset:间距偏移 使用普通文本样式时,在字符之间的间隙偏移

Bold Spacing:粗体间隙 没有指定粗体资源时,粗体文本字符之间的间距偏移

ltalic Style:斜体样式 400 - Regular > Italic Style 变体指定字体资源没有设置时 TMP将使用常规样式字体资源中的字符倾斜该字段中的量来达到斜体效果

Tab Multiple:多制表符 该值乘以字体空格符的宽度,用来表示制表符的大小

2.4.其他设置

备用字体资源:

可以创建相应文本资源的变体,从而在里面提供更多的字符。

Fallback List: 列出所有备用字体资产。 当主字体中缺少某些字符时,系统会按顺序尝试使用这些备用字体进行查找

Character Table 字符表:

如果有需要某个字符特殊的偏移间隔效果,可以来这里找到并给他单独设置

Glyph Table: 字形表:

和字符表作用差不多其实。这里还可以设置每个字符的采样位置。

  • X、Y、W、H:字符在纹理中对应的位置范围
  • W、H:字形的宽高
  • BX、BY:相对基线的左上角位置(X方向,Y方向)
  • AD:和下一个字符间隔的宽
  • Scale:缩放大小
  • Atlas Index:图集索引 在第几个图集中(开启了多图集时)

Glyph Adjustment Table: 字形调整表

字形调整表控制特定字符对之间的间距

  • Adjustment Pair Search:调整对搜索
  • Char 左和右:想要查找的字符
  • ID 左和右:唯一标识符,一般显示左右字符的ASCII十进制编码
  • OX 左和右:字符原点坐标X
  • OY 左和右:字符原点坐标Y
  • AX 左和右:字符的宽度
  • Add New Glyph Adjustment Record: 添加新的字形调整记录


五.富文本标签

#region 知识点三 常用富文本标签
//1.换行<br>//2.文本加粗<b></b>//3.文本斜体<i></i>//4.加下划线<u></u>//5.改变大小<size=数值></size>//6.改变颜色<color=#RGBA 16进制></color>//7.对齐方式<align=left、center、right、justified、flush></align>//8.背景高亮<mark=#RGBA 16进制></mark>//9.透明度<alpha=#A 16进制>//10.全部大写<allcaps></allcaps>//11.改字体和材质(可选)<font="字体名" material="材质名"></font>//12.加上标(平方)<sup></sup>//13.加下标(化学式)<sub></sub>//14.超链接<link="链接"></link>
#endregion

更多的富文本标签可以去手册查看:https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/manual/RichTextSupportedTags.html


六.总结

①TextMeshPro是比老Text控件渲染更加清晰,功能更加强大丰富的上位替代。我们需要手动导入与更新这它的相关文件

②TextMeshPro的UI控件可以调节多种颜色和字体,以及布局设置,还有文本在溢出时候如何处理。

③TextMeshPro的3D文本控件的参数和UI文本控件差不多,只是渲染,交互方式有所不同。

④我们可以将一个字体拖入工程后为他生成相应的字体资源以给TMP使用。如果提前知道了所有可能的字符,用静态的比较好。否则用动态的,动态的能够根据我们输入的字符,动态生成没有的字符到纹理中。

⑤TMP中同样可以使用富文本标签进行编辑

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BigDecimal(用于处理超出double范围的浮点数)

BigDecimal 是 Java 中 java.math 包提供的高精度十进制浮点数类&#xff0c;专为解决基本类型&#xff08;float/double&#xff09;的精度缺陷而设计&#xff0c;广泛用于金融、科学计算等对精度要求极高的场景。以下从核心特性、使用方法、常见问题对比、注意事项等方面详细…

Nginx 优化

文章目录1、隐藏版本号2、修改用户与组3、缓存时间4、日志切割5、连接超时6、更改进程数7、配置网页8、防盗链1、隐藏版本号 隐藏nginx的版本号&#xff0c;为了防止恶意用户利用已知漏洞进行攻击 ## 查看版本号 curl -I http://192.168.10.23方法一&#xff1a;修改配置文件…

基于多模态与主动学习的车船飞机图像识别系统研究与应用技术方案

技术方案 一、技术背景与研究现状 图像识别是计算机视觉的核心任务之一&#xff0c;随着深度学习的发展&#xff0c;基于 卷积神经网络&#xff08;CNN&#xff09; 与 视觉Transformer&#xff08;ViT&#xff09; 的图像分类方法已成为主流。 根据《图像分类技术选型——截止…

Word2Vec词嵌入技术和动态词嵌入技术

Word2Vec&#xff08;Word to Vector&#xff09;是 2013 年由 Google 团队提出的无监督词嵌入模型&#xff0c;是一种静态词嵌入技术&#xff0c;核心目标是将自然语言中的离散词汇映射为低维、稠密的实数向量&#xff08;即 “词向量”&#xff09;&#xff0c;让向量空间的距…

Netty从0到1系列之Netty逻辑架构【上】

文章目录一、Netty逻辑架构【上】1.1 网络通信层1.1.1 BootStrap & ServerBootStrap1. ✅核心方法链与配置2. ✅ 架构与流程3. ✅ 底层实现与原理分析4. ✅ 实践经验与总结1.1.2 Channel1.2 事件调度层1.2.1 事件调度层概述1.2.2 EventLoop【事件循环】1.2.3 EventLoopGrou…

Spring Cloud 高频面试题详解(含代码示例与深度解析)

文章目录Spring Cloud 高频面试题详解&#xff08;含代码示例与深度解析&#xff09;1. 什么是 Spring Cloud&#xff1f;它与 Spring Boot 有什么关系&#xff1f;2. 服务发现&#xff1a;Eureka 和 Nacos 的区别与选型&#xff1f;Eureka 示例与原理Eureka vs Nacos 对比表3.…

Ascend310B重构驱动run包

在Atlas 200I AI加速模块(Ascend310B)移植过程中如需要将自己编译的Image、dt.img及内核模块打包到启动镜像包中需要对"Ascend-hdk-310b-npu-driver-soc_<version>_linux-aarch64.run"(下面统称驱动run包)进行重构。下面将介绍如何重构run包。 重构驱动run包需…

Leecode hot100 - 287. 寻找重复数

题目描述 287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; 定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返…

机器人控制器开发(驱动层——奥比大白相机适配)

文章总览 编译OrbbecSDK_ROS2的代码 执行命令 colcon buildros2 launch orbbec_camera dabai.launch.py问题1&#xff1a; 运行时报错&#xff1a; [component_container-1] [ERROR] [1757153916.450795107] [camera.camera_container]: Failed to load library: Could not…

`vcpkg` 微软开源的 C/C++ 包管理工具的使用和安装使用spdlog

vcpkg 是 微软开源的 C/C 包管理工具&#xff0c;类似于 Python 的 pip、Node.js 的 npm、Rust 的 cargo。 它的主要作用是&#xff1a;帮助你快速下载、编译、安装和管理 C/C 第三方库&#xff0c;并自动配置到你的项目&#xff08;比如 Visual Studio、CMake、MSBuild&#x…

Mysql 幻读详解

我们来详细地聊一聊 MySQL InnoDB 中的“幻读”&#xff08;Phantom Read&#xff09;问题。这是一个在数据库事务隔离中非常核心且有时令人困惑的概念。 我会从定义、例子、原因以及解决方案几个方面来彻底讲清楚。 1. 什么是幻读&#xff1f; 官方定义&#xff1a;幻读指的…

如何生成 GitHub Token(用于 Hexo 部署):保姆级教程+避坑指南

如何生成 GitHub Token&#xff08;用于 Hexo 部署&#xff09;&#xff1a;保姆级教程避坑指南 前置说明&#xff1a;为什么需要 GitHub Token&#xff1f; 在使用 Hexo 部署博客到 GitHub Pages 时&#xff0c;你可能会遇到「密码验证失败」或「需要双重验证」的问题——这…

常用加密算法之 AES 简介及应用

相关系列文章 常用加密算法之 SM4 简介及应用常用加密算法之 RSA 简介及应用 引言 AES&#xff08;Advanced Encryption Standard&#xff0c;高级加密标准&#xff09;是一种​​广泛使用的对称分组加密算法​​&#xff0c;它使用相同的密钥进行加密和解密操作&#xff0c…

Java面试问题记录(一)

一、Java 核心基础与进阶1、我们知道 Java 中存在 “值传递” 和 “引用传递” 的说法&#xff0c;你能结合具体例子&#xff0c;说明 Java 到底是值传递还是引用传递吗&#xff1f;这背后涉及到 JVM 中哪些内存区域的交互&#xff1f;Java中只有值传递&#xff0c;不存在引用传…

Redis 主从复制、哨兵与 Cluster 集群部署

文章摘要 本文基于 VMware 虚拟机环境&#xff0c;详细讲解 Redis 高可用架构的核心组件与部署流程&#xff0c;涵盖三大核心模块&#xff1a;Redis 主从复制&#xff08;实现数据备份与读写分离&#xff09;、Redis 哨兵&#xff08;基于主从复制实现故障自动转移&#xff0c;…

ElementUI 中 validateField 对部分表单字段数组进行校验时多次回调问题

目录 方案一&#xff1a;循环调用 Promise.all 合并结果 方案二&#xff1a;直接传入数组字段 总结 在实际业务中&#xff0c;我们有时只需要对表单的部分字段进行校验。ElementUI 提供的 validateField 方法支持单个字段&#xff0c;也支持字段数组&#xff0c;但在使用时…

Visual Studio 2026 震撼发布!AI 智能编程时代正式来临

Visual Studio 2026 震撼发布&#xff01;AI 智能编程时代正式来临 Visual Studio 2026 Insider图标 开发者们的开发环境即将迎来前所未有的智能革命&#xff0c;微软用Visual Studio 2026 重新定义了编码体验。 2025年9月10日&#xff0c;微软正式推出了Visual Studio 2026 In…

Gamma AI:高效制作PPT的智能生成工具

你有没有过这种崩溃时刻&#xff1f;领导让你下午交一份产品介绍 PPT&#xff0c;你打开模板网站翻了半小时没找到合适的&#xff0c;好不容易选了个模板&#xff0c;又得手动调整文字间距、搭配图片&#xff0c;光是把数据做成图表就花了一小时&#xff0c;最后赶出来的 PPT 还…

Python副业新玩法:用Flask搭小程序后端,躺赚被动收入的秘密

凌晨1点&#xff0c;林浩合上电脑时&#xff0c;手机弹出一条微信消息——是上周帮一家社区水果店搭的小程序后端&#xff0c;商家发来了当月的服务费到账提醒。他靠在椅背上笑了&#xff1a;这是这个月第8笔“睡后收入”&#xff0c;加起来刚好覆盖了下个月的房贷。半年前&…

基于PyQt5和阿里云TTS的语音合成应用开发实战[附源码】

项目概述 本文将详细介绍一个基于PyQt5图形界面框架和阿里云TTS(Text-to-Speech)服务的语音合成桌面应用程序的开发过程。该应用提供了完整的文字转语音功能,包括多音色选择、参数调节、实时试听、语速调节和音频下载等特性。 技术栈 前端界面: PyQt5 语音合成: 阿里云TTS服…