UGUI Text和TextMeshPro
参考文献
https://docs.unity3d.com/Packages/[email protected]/manual/index.html
https://docs.unity3d.com/Packages/[email protected]/manual/index.html
移入Legacy一栏的Text
Text组件是UGUI的一部分 它和其它UI组件一样都有共同的基类Graphic
所以可以很方便的和其他组件一起管理 因为有共同的父类可以放入一个容器里
那Unity弃用它的理由是什么呢?我是不知道了 至少我没有在互联网搜索中找到官方弃用Text的详细原因
Text和TextMeshPro(TMP)相比
Text是比较简单的 可定制化的程度不高 当然 Text支持富文本 你可以用富文本的功能搞些花样出来
但Text组件本身只支持简单的对齐排列 不能调整行间距 阴影需要配合其他组件且消耗不太好看
Text的成像原理比较low 虽然我不知道为什么low 但举个例子 Text的字号越大抗锯齿的效果越明显 就会显得比较模糊
但是TMP采用了SDF(Signed Distance Field 有向距离场)进行成像 任意字号下抗锯齿的效果都很好 都非常清晰
这算是TMP的一大优势
另一大优势跟我们之后说的图文混排有关 TMP这个插件提供了很多强大的定制功能
可以实现艺术字动画 也能渲染图像 例如emoji 可以很方便的实现超链接
当然 TMP也支持富文本 所以Text能实现的TMP也都能实现 甚至能做得更好
这些功能使它更多应用于复杂需求的文字UI制作 我想这也是为什么Unity官方把Text丢进Legacy的原因
但TMP并不是完美的 Text可以很方便的使用下载好的TrueType字体文件 TMP不行
TMP需要自己去创建对应的字体文件格式 这算是一个很麻烦的点
还有TMP天生的对多语言支持比较弱 因为字体文件需要自己创建 所以你要自己去准备好多语言显示所需的字库
我该选择哪一种?
这个问题并没有固定解 我是一个喜新厌旧的人 但学习新东西总需要成本
所以现在我仍然坚持使用Text 一方面我遇到的需求并不是很复杂 另一方面就是Text好管理
但是我不能否认TMP的那些优势确实很有吸引力 我也打算在接下来的工程里去尝试它
总之关于这个问题 我的结论就是
功能简单不复杂 直接用Text会更快一点
功能复杂要求高 那选TMP会好一点