【Unity基础】TextMeshPro组件学习过程记录

news2024/11/23 22:05:43

目录

  • 1.TextMeshPro组件
    • 渲染
    • 创建文本
      • RTL Editor
      • 字体
        • Font Asset
        • 字体加粗,下划线等
        • 字体大小控制
        • 字体颜色控制
        • 字体渐变控制
        • 字符间隔、单词间隔、行间距、段落间距控制
        • Wrapping
        • UV映射控制
        • 代码
  • 2.TextMeshPro组件Asset
    • Face Info
    • Generation Setting
  • 3.使用Dynamic SDF System创建中文字体
  • 4.SDF算法原理
    • SDF生成
  • 具体文档地址

1.TextMeshPro组件

TextMeshPro是Unity官方用来代替Text的一种方案,提供了性能更好,效果更佳的一种文本显示方案
,能够更好地控制文本格式和布局,提供字符、单词、行、段落间距离调整、字距调整、文本对齐、链接、超过30种富文本标签、多种字体和精灵支持、自定义样式等功能。

渲染

在这里插入图片描述
文本的每个字符都使用了两个三角形,四个顶点,就算使用了描边,阴影等效果也不会有额外的顶点生成,这说明了TextMeshPro的强大性能。

创建文本

在Hierarchy面板上右击时,我们发现TextMeshPro有两处可以进行创建,第一个在菜单3D Object里,第二个在UI里面,也就是说TextMeshPro可以创建为场景的3D对象和Canvas下的UI元素。

创建中创建一个UI的TextMeshPro。

RTL Editor

启用此选项可从右到左而不是从左到右显示文本。
检查器会显示一个附加的输入字段,您可以在其中查看反转的文本并直接对其进行编辑。
文本在显示在屏幕上或呈现之前会反转。
在这里插入图片描述

字体

Font Asset

用来给予字体资源的字段

字体加粗,下划线等

查看Inspector面板中,材质下方的Font Style(注意不是Text Style)主要用来控制加粗,斜边,下划线、画线、全部小写、全部大写、首个字母最大化。
在这里插入图片描述

字体大小控制

Font Size主要控制字体大小,Auto Size勾选是进行文本边框大小的自适应,auto size options主要是进行最大值最小值等限制
在这里插入图片描述

字体颜色控制

Vertex Color主要用来控制字体颜色。

字体渐变控制

Color Gradient主要用来处理渐变效果的
在这里插入图片描述
值得注意的时候,TextMeshPro能够进行水平方向的渐变,也能够支持垂直方向的渐变,也可以支持四个方向的渐变。

字符间隔、单词间隔、行间距、段落间距控制

Spacing Options 里面的Character、Word、Line、Paragrah分别进行字符间隔、单词间隔、行间距、段落间距控制。

Wrap Mix主要是控制对齐方式的拉伸的。

Wrapping

主要用来控制文本框越界的一些情况

UV映射控制

Horizontal Mapping和Vertical Mapping主要是用来控制UV如何进行映射,主要进行UV拉伸的控制。

代码

如下截图,使用的方式和Text组件是差不多的。不过注意的是,场景中的C#脚本是TextMeshPro而UI版本为TextMeshProUGUI
在这里插入图片描述

2.TextMeshPro组件Asset

具体的文档地址如下:
https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/TextMeshPro/FontAssetsProperties.html

Face Info

Face Info 属性控制字体的线条度量。它们还包括字体资产创建器在创建资产时生成的只读属性。
在这里插入图片描述
Face Info下可以对当前使用的字体的一些参数进行调整

Generation Setting

字体资产创建器会在您生成字体资产时生成这些值。
在这里插入图片描述

3.使用Dynamic SDF System创建中文字体

动态SDF系统,简单理解就是根据使用的文本来动态生成字体纹理
发现使用一个默认的字体资源是不支持中文的
在这里插入图片描述
选择一个支持中文的Tff字体文件来创建出Font Asset并且选择赋值进Font Asset,如何选择动态的图集时候,就发现中文显示出来了。(创建的方法是选中对应的字体Tff文件,右击Create>TextMeshPro>FontAsset)
在这里插入图片描述
在这里插入图片描述
这个时候使用到的字体都会存到生成的字体图集里面去了。
在这里插入图片描述
每次用到新的字体的时候都会把对应的字保存到图集里面去了。
在这里插入图片描述

当文字比较多的时候那么可以使用静态字体。通常处理方式是下载一个【汉字常用3500字】、【中文常用5000字】等的一个txt文件,用Unicode编码保存。(txt文本,另存为——格式:utf8)
把这个txt文件导入Unity中。

在Unity中——>Window——>TextMeshPro——>Font Asset Creator中的Source Font Flie选择添加好的中文字体。

在Character Flie中选择3500常用字文件。

根据文字数量修改Atlas Resolution。

点击 Generate Font Atlas生成。

在这里插入图片描述

注意:文字过多,Atlas Resolution选择大小不要太小。

最后Save保存一下生成的字体asset。

4.SDF算法原理

TextMeshPro是基于SDF算法生成字体纹理图集的。
SDF,全称signed distance field。原理很简单,确实就是使用一张纹理来记录下一些数据,纹理上的每个像素点分别记录改像素到物体的距离,所以名称叫有向距离场。
假色在物体外部为整数,越远数值越大。
正好在边缘上,数值为0
在物体内部数值为负数。

如下图所示,红色为整数,绿色代表0边缘,负数都显示成黑色。那么一个圆形的2D图形,生成的Texture2D,四周的为整数,所以颜色都为红色,越远越红。
在这里插入图片描述
SDF算法有非常广泛的应用。
比如字体坑锯齿。
比方说使用常规的字体纹理渲染的字体
在这里插入图片描述
放大15倍数后
在这里插入图片描述
而如果基于SDF渲染的字体放大15倍后
在这里插入图片描述
这是达到了一种位图的效果了。
当然也可以应用到后处理,阴影贴图等等。

SDF生成

生成SDF,使用8ssedt,这里给出里算法,SDF

慢慢完善(实践=.=)

具体文档地址

查询官方文档是非常重要的
https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/index.html

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

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

相关文章

Java基础_JDBC

JDBC 概述步骤项目创建流程代码改进 使用Statement的问题:SQL注入(1)SQL注入(2)PreparedStatement1、防止SQL注入2、批处理 事务连接池建立数据库连接实现 日志 概述 Java数据库连接,(Java Dat…

机器学习:驱动现代交通运输革命的AI智慧引擎

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

POCEXP编写—多线程

POC&EXP编写—多线程 1. 前言2. 多进程&多线程2.1. 多进程2.1.1. 案例 2.2. 多线程2.2.1. 案例: 2.3. POC的案例(模板) 3. UA头设置3.1. 随机UA头3.1.1. 案例3.1.2. 模板拼接 4. 代理Proxy4.1. 单代理案例4.2. 多代理案例4.2.1. 请求…

2024年最新linux安装harbor

linux安装harbor Harbor官方介绍这里就不照搬了,说直白点:Harbor就是私有的 Docker Hob 镜像仓库。 前置条件:安装好docker,docker-compose 1、安装harbor离线包(在线安装形式不稳定,由于网络原因中间可能中断&…

C++ 小游戏:战斗之旅

一、游戏名称:战斗之旅 游戏规则 角色选择:玩家可以选择不同的角色,每个角色都有不同的属性和技能。商城:玩家可以访问商城购买不同的装备,包括武器和回复物品。战斗:玩家可以与其他角色进行战斗。在战斗…

盲人定位设备:为视障人士独立出行铺设智慧之路

在快速发展的数字时代,科技的每一次跃进都在悄然改变我们的生活方式。对于盲人朋友而言,一款名为“蝙蝠避障”集实时避障于一身的盲人定位设备,正成为他们探索世界、实现独立出行的有力助手。这款设备,不仅重新定义了无障碍出行的…

YOLOv8+PyQt5输电线路缺陷检测(目前最全面的类别检测,可以从图像、视频和摄像头三种路径检测)

1.效果视频:YOLOv8PyQt5输电线路缺陷检测(目前最全面的类别检测,可以从图像、视频和摄像头三种路径检测)_哔哩哔哩_bilibili 资源包含可视化的输电线路缺陷检测系统,可识别图片和视频当中出现的五类常见的输电线路缺陷…

新书速览|ChatGLM3大模型本地化部署、应用开发与微调

实战文本生成、智能问答、信息抽取、财务预警应用开发,掌握ChatGLM3大模型部署、开发与微调技术 01 本书内容 《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇,专注于大模型的本地化部署、应用开发以及微…

Linux基本指令(3)

目录 时间相关的指令: 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加好后接数个标记,其中常用的标记列表如下: 2.在设定时间方面: 3.时间戳: Cal指令: find指令&a…

Kubernetes 声明式语言 YAML

什么是 YAML YAML(YAML Ain’t Markup Language)是一种可读的数据序列化语言,通常用于配置文件、数据序列化和交换格式。YAML 的设计目标是易读易写,并且能够映射到动态语言中的数据结构 YA加粗样式ML 是 JSON 的超集&#xff0…

纯血鸿蒙APP实战开发——Navigation实现多设备适配案例

介绍 在应用开发时,一个应用需要适配多终端的设备,使用Navigation的mode属性来实现一套代码,多终端适配。 效果图预览 使用说明 将程序运行在折叠屏手机或者平板上观看适配效果。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a…

MyBatis(注解方式操作)

文章目录 1.注解方式操作文件目录1.快速入门(完整步骤)1.pom.xml(完整)2.resources/jdbc.properties外部配置文件(根据实际情况修改参数)3.在resources/mybatis-config.xml(完整)中配…

仓库管理系统(WMS)是什么?有哪些功能?

阅读本文,你将了解:1、仓库管理(WMS)是什么? 2、仓库管理系统(WMS)有什么功能 3、使用仓库管理系统能给企业带来什么好处 一、仓库管理系统是什么 WMS,全称Warehouse Management S…

借助Aspose.SVG图像控件,在线将 PNG 转换为 XML

Aspose.SVG for .NET 是用于SVG文件处理的灵活库,并且与其规范完全兼容。API可以轻松加载,保存和转换SVG文件,以及通过其文档对象模型(DOM)读取和遍历文件的元素。API独立于任何其他软件,使开发人员无需使用…

BGP配置和应用案例

策略路由的配置步骤 l 策略路由的配置步骤如下: 创建route-map 通过ACL匹配感兴趣的数据,定义策略动作 在指定接口下通过ip policy 命令应用route-map l 最终实现对通过该接口进入设备的数据进行检查,对匹配的数据执行规定的策略…

注意力机制(四)(多头注意力机制)

​🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀《深度学习基础知识》 相关专栏: ⚽《机器学习基础知识》 🏐《机器学习项目实战》 🥎《深度学习项目实…

如何使用python自动修改图片

如何使用python自动修改图片 首先: 要使用Python代码自动修改图片,你可以使用 imageio和matplotlib库.以下是一个简单的示例代码,演示如何调整图片尺寸. 确保已经安装了imageio和matplotlib库.如果没有安装,可以使用以下命令安装 pip install imageio matplotli…

10G MAC层设计系列-(2)MAC RX模块

一、概述 MAC RX模块的需要进行解码、对齐、CRC校验。 因为在空闲的时候10G PCS/PMA会一直向外吐空闲符(x07)所以需要根据开始符、结束符将有效数据从码流中截取,也就是解码。 因为开始字符的所在位置有两种形式,而结束字符的位…

C语言 | Leetcode C语言题解之第50题Pow(x,n)

题目&#xff1a; 题解&#xff1a; double myPow(double x, int n){if(n 0 || x 1){return 1;}if(n < 0){return 1/(x*myPow(x,-(n1)));}if(n % 2 0){return myPow(x*x,n/2);}else{return x*myPow(x*x,(n - 1)/2);} }

Node私库Verdaccio使用记录,包的构建,推送和拉取

Node私库Verdaccio使用记录&#xff0c;包的构建&#xff0c;推送和拉取 Verdaccio是一个轻量级的私有npm代理注册中心&#xff0c;它可以帮助你在本地搭建一个npm仓库&#xff0c;非常适合企业内部使用。通过使用Verdaccio&#xff0c;你可以控制和缓存依赖包&#xff0c;提高…