👉一.Unity字体种类展示
这是字体包里面的图片,是不是很多种字体.
下载链接不能用了,涉及到ban quan,
可以留言,我发给你
有时候可能回复的不是很快(抱拳了,工作日很快)
👉二.TextMeshPro介绍
TextMeshPro 是 Unity 的文本解决方案。它是 Unity 的 UI 文本和旧版文本网格的替代品。
TextMeshPro(也称为 TMP)功能强大且易于使用,它使用高级文本渲染技术以及一组自定义着色器;提供显着的视觉质量改进,同时在文本样式和纹理方面为用户提供着难以置信的灵活性。
TextMeshPro 提供了对文本格式和布局的改进,具有字符、单词、行和段落间距、字距调整、对齐文本、链接、支持多字体和精灵、自定义样式等功能。
TextMeshPro 的原理是基于 Mesh 渲染的,它使用了一种叫做 Signed Distance Field(简称 SDF)的技术,可以在运行时动态生成文本的 Mesh,从而实现更高质量的文本渲染效果。
SDF 技术是一种将二维平面上的图像转换为三维空间中的距离场的技术。在 SDF 中,每个像素点都包含了一个距离值,表示该像素点距离图像的边缘有多远。通过计算距离值,可以实现各种文本效果,比如描边、阴影、高亮等等。
TextMeshPro 通过使用 SDF 技术,可以实现更高质量、更灵活的文本渲染效果。它可以动态生成文本的 Mesh,从而实现各种效果,比如描边、阴影、高亮等等。同时,TextMeshPro 还提供了丰富的 API,可以方便地实现各种文本效果。
👉三.TextMeshPro创建方法
右键UI/TextMeshPro然后弹出如下图,点击Import TMP Essentials 导入即可
设置完成你会发现无法设置中文,只能设置字母或数字,所以接着往下看
1.第一步先有一个字体.ttf.ttc.otf 格式的字体
2.第二步拖到unity中
3.第三步创建字体库
4.第四步 把字体拖到如下图位置
5.第五步 点击GenerateFontAtlas等待一会点save到文件夹里
6.第六步把刚保存的文件拖到如下图的位置即可使用
👉三.TextMeshPro的使用方法
里面包含多种用法,具体用法请自行扩展
代码如下
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class TextMeshProScript : MonoBehaviour
{
public TextMeshProUGUI textMeshPro;
void Start()
{
textMeshPro.text = "Hello, World!";
}
//设置它的样式
public void TextYangShi()
{
//设置字体
textMeshPro.font = Resources.Load<TMP_FontAsset>(".ttf");
//设置字体大小
textMeshPro.fontSize = 24;
//设置字体颜色
textMeshPro.color = Color.white;
//设置轮廓宽度
textMeshPro.outlineWidth = 0.1f;
//设置对齐方式
textMeshPro.alignment = TextAlignmentOptions.Center;
//设置字体的高亮效果
textMeshPro.richText = true;
textMeshPro.text = "<color=yellow>Hello, World!</color>";
}
// Update is called once per frame
void Update()
{
}
}
补充:
👉TextMeshPro的核心原理
-
SDF(Signed Distance Field)技术
TextMeshPro通过SDF技术将字符形状转换为距离场数据,存储在图集中。SDF通过计算每个像素到字符边缘的距离,动态生成平滑的轮廓,使得字体在任意缩放比例下均能保持清晰,避免传统位图字体的模糊问题。 -
字符图集(Font Atlas)
TMP需要将字体字符预渲染到一张图集中,包括静态和动态两种模式:
静态字体:预先指定所有需要显示的字符(如通过TXT文件),生成固定图集,适用于高频使用且字符集固定的场景。
动态字体:运行时按需生成字符图集,灵活性高但可能因频繁生成导致性能问题。 -
字体后备(Font Fallback)
当主字体缺少某些字符时,TMP支持从其他字体资源中查找并显示备用字符,常用于处理特殊符号或低频字符。
👉使用中文字体的关键步骤
-
字体资源准备
选择中文字体文件:推荐使用支持中文的字体文件(如微软雅黑、思源黑体),从系统字体目录(如C:\Windows\Fonts)复制.ttf或.otf文件至Unity项目。
字符集文件(TXT):创建包含所需中文字符的TXT文件(如常用7000字),需以UTF-8编码保存。 -
生成字体图集
打开Font Asset Creator:通过菜单Window > TextMeshPro > Font Asset Creator进入工具界面。
配置参数:
Source Font File:选择中文字体文件。
Character Set:选Characters from File,并指定字符集TXT文件。
Atlas Resolution:建议设为8192x8192以容纳更多字符,避免显示不全。
Padding:设置字符间距(推荐为字体大小的1/10)。
生成并保存:点击Generate Font Atlas生成图集,保存为.asset文件。 -
应用字体资源
将生成的.asset文件拖拽至TextMeshPro组件的Font Asset字段。
若需动态扩展字符,可在主字体的Fallback List中添加动态字体资源。
👉注意事项与优化技巧
-
字符集覆盖不足
若输入字符未包含在静态图集中,会显示“方块”。需重新生成包含更多字符的图集或启用动态字体补充。
推荐结合静态和动态字体:常用字符预生成,低频字符通过Fallback动态加载89。 -
图集分辨率与性能
高分辨率(如8192x8192)会大幅增加内存占用,需根据项目需求平衡。动态字体图集建议使用2048x2048以控制资源大小。
- 材质与Shader问题
若文字出现白色底纹,需将材质Shader从SDF切换为Bitmap。
警告“Unable to add character”可通过勾选图集纹理的Is Readable属性解决。 - 动态字体的性能风险
动态生成字符可能导致运行时卡顿,建议在打包前通过Update Atlas Texture预生成所有字符。
多语言与特殊符号
处理中文标点符号时,需在字符集中包含全角符号(如“,”、“。”),或通过Fallback添加专用符号字体。
👉壁纸分享
👉喜欢的话点个赞,关注一下再走吧,谢谢