Unity TextMeshPro学习

新版Unity(如2022) UGUI默认使用TextMeshPro显示文本;

相较于旧的Text组件,TextMeshPro功能更强大,渲染效果更好;

本文学习自 Unity TextMeshPro 3.2.0官方教程

1. 导入TextMeshPro必须的资源:

执行后往项目中导入如下资源:

2. 创建TextMeshPro对象:

UI Text:

3D Text:

3. 创建TextMeshPro Font Asset:

选择原始字体(如ttf):

选择生成的Font Asset,调整相关参数:

可为字体创建多个渲染材质球:

注意命名前面一部分保持一致,然后就可在Text组件上使用;

4. TextMeshPro组件属性:

比较简单,可参阅官方文档;

5. SDF渲染( Signed Distance Field,有向距离场):

Unity默认使用位图渲染字体,即根据字体信息生成对应字符的位图信息:

使用这种渲染方式,当字体放大后,锯齿感严重,渲染效果不理想;

TextMeshPro默认使用SDF渲染:

SDF字体贴图中记录的不是字符位图颜色信息,而是该像素点到字符边缘的距离;在字符中间,距离值最大,然后从里往外逐渐变小;渲染时根据当前距离值来决定显示的颜色值;

贴图放大显示时,由于插值的是距离,实际计算的颜色值仍能保持准确性,因此使用SDF渲染的字符更清晰,效果更好;

使用SDF还可以很方便的实现描边、阴影和外发光等效果;

6. 显示Sprite:

通过富文本标签在文本中显示Sprite;

1. 导入图集贴图:

2. 设置贴图类型:

3. 切分图集:

4. 创建TextMeshPro Sprite Asset:

创建好后,原始贴图不可以删除,但贴图导入设置可恢复为默认;

5. 在Text组件中显示Sprite:

设置组件的Sprite Asset:

使用sprite富文本标签显示sprite:

图片<sprite index=0>图片<sprite name="icons_1">

如果不设置组件的Sprite Asset,则指定要加载的Sprite Asset名字;

且Sprite Asset得位于Setting指定的Resource目录下,不推荐:

图片<sprite="EmojiOne" index=0>图片<sprite="icons" name="icons_1">

注意,emoji的实现也是一样的,只是每个emoji有自己固定的unicode编码,输入时以\U开头,加上unicode编码:

7. Asset Font材质球设置:

Shader分为两大类:

        用于bitmap渲染;

        用于SDF渲染;

每类Shader又分为桌面版和移动设备版本;

SDF shader有三类:

        Distance Field,

        Distance Field Overlay,与前一个相同,只是渲染在前面;

        Distance Field (Surface),支持光照计算;

SDF shader可以容易实现 描边,底层和斜面效果,但要注意参数过大时,在字体图集中会采样到相邻字符的信息,造成干扰,可减少效果或增大字体图集字符间距;

使用Distance Field shader的材质球属性:

Face:

控制文本的整体外观;

Outline:

Underlay:

主要用于创建投影效果;

Glow,外发光:

效果叠加在原始字符上;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值