Unity-TextMeshPro字体使用

👉一.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的核心原理

  1. SDF(Signed Distance Field)技术
    TextMeshPro通过SDF技术将字符形状转换为距离场数据,存储在图集中。SDF通过计算每个像素到字符边缘的距离,动态生成平滑的轮廓,使得字体在任意缩放比例下均能保持清晰,避免传统位图字体的模糊问题。

  2. 字符图集(Font Atlas)
    TMP需要将字体字符预渲染到一张图集中,包括静态和动态两种模式:
    静态字体:预先指定所有需要显示的字符(如通过TXT文件),生成固定图集,适用于高频使用且字符集固定的场景。
    动态字体:运行时按需生成字符图集,灵活性高但可能因频繁生成导致性能问题。

  3. 字体后备(Font Fallback)
    当主字体缺少某些字符时,TMP支持从其他字体资源中查找并显示备用字符,常用于处理特殊符号或低频字符。

👉使用中文字体的关键步骤

  1. 字体资源准备
    选择中文字体文件:推荐使用支持中文的字体文件(如微软雅黑、思源黑体),从系统字体目录(如C:\Windows\Fonts)复制.ttf或.otf文件至Unity项目。
    字符集文件(TXT):创建包含所需中文字符的TXT文件(如常用7000字),需以UTF-8编码保存。

  2. 生成字体图集
    打开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文件。

  3. 应用字体资源
    将生成的.asset文件拖拽至TextMeshPro组件的Font Asset字段。
    若需动态扩展字符,可在主字体的Fallback List中添加动态字体资源。

👉注意事项与优化技巧

  1. 字符集覆盖不足
    若输入字符未包含在静态图集中,会显示“方块”。需重新生成包含更多字符的图集或启用动态字体补充。
    推荐结合静态和动态字体:常用字符预生成,低频字符通过Fallback动态加载89。

  2. 图集分辨率与性能

高分辨率(如8192x8192)会大幅增加内存占用,需根据项目需求平衡。动态字体图集建议使用2048x2048以控制资源大小。

  1. 材质与Shader问题
    若文字出现白色底纹,需将材质Shader从SDF切换为Bitmap。
    警告“Unable to add character”可通过勾选图集纹理的Is Readable属性解决。
  2. 动态字体的性能风险
    动态生成字符可能导致运行时卡顿,建议在打包前通过Update Atlas Texture预生成所有字符。
    多语言与特殊符号
    处理中文标点符号时,需在字符集中包含全角符号(如“,”、“。”),或通过Fallback添加专用符号字体。

👉壁纸分享

请添加图片描述
请添加图片描述

👉喜欢的话点个赞,关注一下再走吧,谢谢

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心疼你的一切

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值