TextMeshPro
TextMeshPro
文档
[官方文档](TextMesh Pro Documentation | TextMeshPro | 4.0.0-pre.2 (unity3d.com))
Unity 中的 TextMesh Pro 简介 |科德科 — Introduction to TextMesh Pro in Unity | Kodeco
[UGUI图文混排一]TextMehPro(TMP)使用手册 - 知乎 (zhihu.com)
动态/静态字体区别
动态字体资源 |文本网格专业版 |4.0.0-pre.2 — Dynamic fonts assets | TextMeshPro | 4.0.0-pre.2 (unity3d.com)
TextMeshPro现在又自动扩容机制,即指定字体自动使用字体中的文字,不用手动生成,代价是稍许消耗.
动态字体需要保留原来的字体文件(.ttf.otf),不然无法动态生成,这意味者会增大包体,而静态字体可以生成之后删除
制作中文字用得到的常用字
wy-luke/Unity-TextMeshPro-Chinese-Characters-Set
标签
Unity手游实战:从0开始SLG——TextMeshPro(三)Rich Text - 知乎 (zhihu.com)
[UGUI图文混排二]TMP支持的富文本(Rich Text)标签 - 知乎 (zhihu.com)
可以查看这个类 TMP_RichTextTagsCommon.cs
给图文中的图加颜色
<sprite index=0 color=#FFEB04>
缩进
<line-indent=15%>
图文帧动画的图帧动画,只支持2帧
<anim="first frame, last frame, frame rate">
eg:<sprite index=0 anim="1,2,1">
注:rate 越小越慢,最小为1
换行
这里说明一下LineBreaking Following Characters
和LineBreaking Leading Characters
LineBreaking Following Characters
: 里面定义的标点字符,表示跟随
,即不能出现在句首,例如句号逗号。。。
LineBreaking Leading Characters
:定义的标点符号,表示可以启新行,能出现在句首,例如括号。。。
TextMeshPro打包AssetBundle
当导入TestMeshPro的时候会自动导入一些资源包,大部分都在Resources文件夹下
操作步骤
- 将TextMeshPro包变成本地包
修改源代码
主要是修改TMP_Settings中
1 | /// <summary> |
修改为(不建议 建议使用更新方案)
1 | public static TMP_Settings instance |
2025年7月9日 更新 才用AssetDatabase.FindAssets不使用固定路径 不要修改 TMP Settings名字(当然想改名字直接把查找变成AssetDatabase.FindAssets(“t:ScriptableObject”))
1 | public static TMP_Settings instance |
在启动运行时
1 | TMP_Settings.instance = GameEngine.AssetModule.LoadAsset<TMP_Settings>("fonts/TMP Settings.asset"); |
修改FontCreateWindow窗口Missing Glyph Report存放位置
修改 TMPro_FontAssetCreatorWindow.cs->UpdateRenderFeedbackWindow()
源代码
源代码
1 | // Save Missing Glyph Report file |
直接改成存放到Asset目录下,防止因为修改了文件夹而没有正确存放位置
1 | //if (Directory.Exists("Assets/TextMesh Pro")) |
食用方案
使用
7000字+常用符号
作为常用字,把□
(unicode:25A1)打入进去,当文字找不到时候自动会使用□占位,然后使用工具将字体贴图压缩,作为静态字体为默认字体找一个全字体设置为动态字体作为最后的fallback,要使用反向裁剪去除该字体中
7000字+常用符号
,只保留其他文字(当然也要包含制作7000字+常用符号
时miss的文字)
当然第二步如果不想做动态字体,也可以弄个只有生僻字的静态字体(可以参考通用规范汉子表大概8160多字 - 常用7000字)
还有这个反向裁剪
该怎么实现,我参考ai给的py脚本使用fonttools
库,但是还没验证,不知道有没有道友有明确的验证的方案.
7000字+常用符号: https://github.com/wy-luke/Unity-TextMeshPro-Chinese-Characters-Set