在Unity中,TextMeshPro与常规 Text 组件相比提供了更高级的文本呈现功能,TextMesh Pro 可以处理各种语言,包括中文。我们可以轻松地在 Unity 项目中使用中文,而不必担心字体和布局问题。

目录

一、配置和使用中文字体步骤

二、警告及解决方案

三、Font Asset Creator属性介绍


一、配置和使用中文字体步骤

第一步,从字体库或其他来源获取中文字体文件,通常为.ttf、.otf或.ttc格式。最简单的方式是从Windows系统文件的Font文件夹里拖一个.ttc文件(C盘 > Windows文件夹 > Fonts 文件夹)。这里提供一个中文字体下载资源:Font/font at master · kaienfr/Font · GitHub

第二步,新建一个文本文件,命名为“我的字库”,打开.txt文件,编辑文字,博主以“你好,世界!”举例,在项目实际应用中,小伙伴们编辑最好加入所有常用汉字,可以直接百度常用汉字库。这里附上下载链接:Font/常用汉字库 3500.txt at master · kaienfr/Font · GitHub

第三步,将字体文件和字库文件复制到Unity项目的Assets文件夹或其子文件夹中。

第四步,在Unity中,点击Window,选择TextMeshPro > Font Asset Creator来创建一个新的字体资源(文章末尾对Font Asset Creator所有属性进行解释),将字体文件拖入Source Font File,Atlas Resolution设置为最大,设置Character Set属性为Characters from File,接着将字库文件拖入Character File,其余属性可根据自己需要进行设置,点击Generate Font Atlas开始生成字体图集纹理,等待一段时间,点击Save,保存到Assets文件夹或其子文件夹中。

第五步,在层级面板右键创建TextMeshPro(GameObject > UI > Text - TextMeshPro),将保存的文件拖入检视面板,编辑文字“你好,世界!”,接着就出现了一系列的警告,针对这些警告,博主在第二部分提供了解决方案。

效果如下:

第六步,可能小伙伴们和博主一样,“你好,世界!”每个字符都有一层白色半透明底纹,这是因为TextMeshPro 使用有向距离场的方式渲染,解决方案:将Text(TMP)材质的Shader属性设置为Bitmap。

效果如下:

二、警告及解决方案

警告1:Unable to add the requested character to font asset [msyhbd SDF]'s atlas texture. Please make the texture [msyhbd SDF Atlas] readable.

解决方案1:在项目面板中选择字体中包含的图集纹理,然后将检查器更改为调试(Debug)模式,勾选Is Readable。

解决方案2:在该字体文件目录下用记事本打开.asset文件,找到m_Isreadable:0,将其修改为1并保存,原理同解决方案1一样,参考:Unity TMPro Unable to add the requested character to font asset - 哔哩哔哩

警告2:The character used for Underline is not available in font asset [msyhbd SDF].

解决方案1:在项目面板中找到TextMeshPro文件,选择Resources > TMP Settings,在检视面板勾选Disable warnings,即关掉警告,下面给出解决方案2从根本上修复这个警告。

解决方案2:警告翻译为:“用于下划线的字符在字体资产 [msyhbd SDF] 中不可用”,即无法使用下划线样式,针对此警告,只需在字符集加上下划线字符,重复以上步骤即可。 参考:Unity笔记 警告The character used for Underline is not available in f - 哔哩哔哩

警告3:“The character with Unicode value \u3002 was not found in the [msyhbd SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u25A1 in text object [Text (TMP)].”

解决方案:警告翻译为:“在 [msyhbd SDF] 字体资源或任何潜在的回退中找不到具有Unicode 值 \u3002 的字符。它在文本对象 [Text (TMP)] 中被 Unicode 字符 \u25A1 取代。”即我们输入了字库文本中没有的字符,解决方案可同警告2解决方案1一样,关掉警告,这样即便我们输入了字库文本中没有的字符,只有Scene界面会出现Unicode 字符 \u25A1 ,而不会出现警告,便于项目调试。

三、Font Asset Creator属性介绍

Unity官方已经对所有属性进行了解释(Font Asset Creator | TextMeshPro | 4.0.0-pre.2),为便于各位小伙伴理解,翻译解释如下:

Source Font File:选择用于生成 Text Mesh Pro 字体资源的字体。

Sampling Point Size:设置用于生成字体纹理的字体大小(以磅为单位)。

Auto Sizing(默认):使用尽可能大的磅值,同时仍然适合纹理上的所有字符。

Custom Size:使用自定义磅值,在文本框中输入所需的大小,使用此设置可实现对仅位图字体的像素精确控制。

Padding:指定字体纹理中字符之间的间距(以像素为单位)。填充越大,过渡越平滑,从而允许更高质量的渲染和更大的效果,如粗轮廓。

Packing Method:指定如何使字符适合字体纹理。

Optimum:查找仍然适合纹理中所有字符的最大可能自动字体大小。

Fast(默认):更快地计算字符打包,但可能使用比优化模式更小的字体大小。

Atlas Resolution:设置字体纹理的大小宽度和高度,以像素为单位,使用 SDF 字体时,更高的分辨率会产生更精细的渐变,从而产生更高质量的文本。

Character Set:选择预定义的字符集。

ASCII(默认):包括 ASCII 字符集中的可见字符。

Extended ASCII:包括扩展 ASCII 字符集中的可见字符。

ASCII Lowercase:仅包含 ASCII 字符集中可见的小写字符。

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

Numbers+Sysbols:仅包括来自 ASCII 字符集的可见数字和符号。

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

Unicode Range(Hex):输入一系列 unicode 十六进制值或值范围,以指定要包含的字符。

Custom Characters:输入字符序列以指定要包含的字符。

Characters from File:包括小伙伴们指定的文本资源中的所有字符。

Render Mode:指定输出字体图集时要使用的渲染模式。

SMOOTH:将图集渲染为抗锯齿位图。

RASTER:将图集渲染为非抗锯齿位图。

SMOOTH_HINTED:将图集渲染为抗锯齿位图,并将字符像素与纹理像素对齐以获得更清晰的结果。

RASTER_HINTED:将图集渲染为非抗锯齿位图,并将字符像素与纹理像素对齐以获得更清晰的结果。

SDF:使用较慢但更准确的 SDF 生成模式渲染图集,并且没有过采样。

SDFAA:使用更快但不太准确的 SDF 生成模式渲染图集,它生成的字体图集足以满足大多数情况。

SDFAA_HINTED:使用更快但不太准确的 SDF 生成模式渲染图集,并将字符像素与纹理像素对齐以获得更清晰的结果,它生成的字体图集足以满足大多数情况。

SDF8:使用较慢但更准确的 SDF 生成模式和 8 倍过采样渲染图集。

SDF16:使用更慢但更准确的 SDF 生成模式和 16 倍过采样渲染图集。

SDF32:使用较慢但更准确的 SDF 生成模式和 32 倍过采样渲染图集。将此设置用于具有复杂或小字符的字体。

Get Kerning Pairs:启用此选项可从字体复制字距调整数据。

Generate Font Atlas:生成字体图集纹理。

【UGUI】TextMeshPro如何配置和使用中文字体相关推荐

  1. ubuntu16.04配置Latex+中文字体

    Ubuntu16.04配置Latex+中文字体 Latex安装 先前安装版本的卸载 apt-get安装包的深度卸载 通过安装器"install-tl"安装的texlive卸载 通过 ...

  2. [Unity][字体]TextMeshPro添加创建中文字体库解决中文乱码

    由于UGUI自带的Text组件在2D的UI聊天气泡显示的时候,字体不能缩到更小的大小与画面适配. 就启用TextMeshPro. 为什么要新建一个 Font Asset,因为使用自带的FontAsse ...

  3. 中文字体的TextMeshPro

    中文字体的TextMeshPro TextMesh Pro无法像UGUI Text那样使用动态字体,因为TextMesh Pro需要对字体进行预处理来计算SDF,这部分计算非常耗时.这对于英文字体来说 ...

  4. Python使用matplotlib可视化多个不同颜色的折线图、通过FontProperties为可视化图像配置中文字体可视化、并指定字体大小

    Python使用matplotlib可视化多个不同颜色的折线图.通过FontProperties为可视化图像配置中文字体可视化.并指定字体大小 目录

  5. webstorm配置,快捷键console.log,中文字体,快捷键配置等

    webstorm配置 一.配置中文字体 二.选中了一个变量名,同名称高亮显示配置 三.快捷键相关配置 四.样式预编译,自动转成css或wxss mac的程序路径:/usr/local/lib/node ...

  6. java如何设置成中文字体,Java程序中文字体配置

    出自Linux Wiki 提示:此文已超过 8 年(3003 天)未更新,如发现内容过时或有误,欢迎改进:) 在Linux中,JAVA程序的中文默认可能不正常:或是显示为方框,或是不够清晰.这是由于J ...

  7. Unity 中 创建 TextMeshPro 中文字体(含常见汉字 TXT 文件)

    TextMeshPro是个好东西,但是原生不支持中文,需要把中文字体转换为TextMeshPro才可以使用,即创建TextMeshPro中文字体,为TextMeshPro添加中文支持.(文章内含 常见 ...

  8. Ubuntu14.04系统安装Latex及配置中文字体

    使用Latex排版很方便,免去了面对Word出现的各种奇葩问题,但是Latex是外国人编写的一套排版的宏定义,对于有时候中文使用的时候会出现不兼容的问题.例如在Windows下WinEdt就会出现各种 ...

  9. GMT中文字体显示配置

    GMT绘图软件默认情况下是不支持中文显示的,近期由于工作的需求,需要使用gmt进行中文的显示.自己在网上查了一些资料,但是说的都是模棱两可,一些具体的细节有必要说明,下面进入正文. GMT中文配置的过 ...

最新文章

  1. 为了可持续的测试自动化,透过表面看本质(译)
  2. 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...
  3. mybatis删除成功返回0_你还在用分页?试试 MyBatis 流式查询,真心强大!
  4. 信息学奥赛一本通 2029:【例4.15】水仙花数
  5. 8005.ros2 添加boost库asio编程
  6. LeetCode85 Maximal Rectangle
  7. php 监听条码枪输入,一起看看js获取扫码枪输入数据的方法
  8. 软件测试学习(二)测试用例例子、黑盒测试(一)
  9. STC学习:扫描频率可变的电子钟
  10. linux命令行显卡驱动,Linux下NVIDIA显卡驱动安装方法
  11. css媒体查询iphone4和iphone5
  12. matlab怎么fprintf,matlab中的fprintf函数怎么用
  13. 个人账号密码管理体系(密码篇)
  14. openpose的搭建
  15. webp文件如何进行格式转换
  16. Xshell的Sessions存放目录
  17. 【OpenCV3图像处理】颜色空间转换(一)颜色空间分类总结
  18. 第3章--Linux内核及内核编程
  19. 系统解剖学 | 心血管系统 | 静脉
  20. 难道天才都容易罹患精神疾病?还是西方医学不知道风邪所犯?

热门文章

  1. java实现拿火柴小游戏
  2. Python拆包 (字典和元祖)
  3. 后缀数组的倍增算法(Prefix Doubling)
  4. mendeley 笔记_Mendeley基本操作和技巧
  5. Caffe 深度学习框架上手教程
  6. java毕业设计牙科诊所信息化管理平台Mybatis+系统+数据库+调试部署
  7. conda 报错 ERROR: This cross-compiler package contains no program bin/x86_64-conda_cos6-linux-gnu-ld
  8. BST的概念,以及查找,插入,删除算法
  9. 如何批量在图片上加二维码?
  10. Linux 字符转换指令