一、生成动态字体
1.字体文件:比如windows系统的fonts文件夹中
2.导入unity,create——Text Mesh Pro——Font Asset
3.字体补充:建一个txt文件,收录常用汉字(中文标点符号也要自己处理),导入unity,然后选中生成的SDF字体,更新字体图集
4.选择合适的分辨率,太小会导致字体放大时模糊,选择从文件导入字符,Generate,然后Save
5.测试生成的字体,嘿哈!
二、静态表情
1.TMP支持图文混排,使用sprite标签(如<sprite=1>)默认表情图集在
2.制作字体的表情图集
a.资源图集,切分
b.生成TMP的Sprite Asset
c.修改位置信息
d.修改TMP setting的默认表情图集
也可以在sprite标签中指定图集名称:
<sprite>标签将Sprite Asset中的图片插入到文本中,Sprite Asset必须位于TMP中的指定文件夹TextMeshPro -> Resources -> Sprite Assets中。
<sprite=9>//默认图集+索引
<sprite name="happy"> //默认图集+图名
<sprite="My Sprites" index=9> //指定图集+索引
<sprite="My Sprites" name="happy">//指定图集+图名
三、动态表情
TMP可以再sprite中指定多个属性,anim可以指定播放图集的开始索引,结束索引,播放速率,例如<sprite=1 anim=1,5,10>
5.测试生成的字体,嘿哈!
<sprite=0><sprite=1><sprite=2><sprite=3>
<sprite="emoji" index=0><sprite="emoji" index=1>
<sprite="emoji" anim=0,3,10>
<sprite index=1 anim=1,5,10>
<sprite="EmojiOne" index=1 anim=1,5,5>
四、超链接
<link=”ID”>超链接</link>,需要监听点击事件,做对应处理:
public void OnPointerClick(PointerEventData eventData)
{
TMP_Text tmp = GetComponent<TMP_Text>();
int linkIndex =TMP_TextUtilities.FindIntersectingLink(tmp,eventData.position,null);
if (linkIndex != -1)
{
TMP_LinkInfo linkInfo = tmp.textInfo.linkInfo[linkIndex];
Debug.Log(linkInfo.GetLinkID());
Application.OpenURL(linkInfo.GetLinkID());
}
}
五、3D文字
六、性能优化
1.由于TMP导出的字体图集格式是未压缩的,所以对于4096 * 4096的纯Alpha通道来说就是16MB的内存占用,所以考虑对图集进行压缩
2.使用图文混编图片和文字会分别占用一个dc(因为二者使用的材质信息不同)。因此TMP中混编的图片同样要注意不要和字体发生重叠,否则就会打断文本自身的合并处理增加dc。如果有重叠的时候就将带图片的放在上层(貌似同一个组件中图片的层级会默认比文字高),这样文字和文字之间dc仍然是合并的文章来源:https://www.toymoban.com/news/detail-407467.html
3.TMP组件支持的外发光,光照,阴影这些特性都是在shader中实现的,如果全开的话势必会增加渲染的开销。建议根据项目情况去选择不同的shader来生成字体,比如插件自己提供的mobile里的shader(mobile里的shader不仅仅是删除了部分功能如光照外发光,本身对外轮廓,阴影的算法也做了简化)文章来源地址https://www.toymoban.com/news/detail-407467.html
到了这里,关于Unity的TextMeshPro使用概览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!