[转]Unity琐碎(3) UGUI 图文混排解决方案和优化

游客

标题:[转]Unity琐碎(3) UGUI 图文混排解决方案和优化
正文:
感觉使用Unity之后总能看到各种各样解决混排的方案，只能说明Unity不够体恤下情啊。这篇文章主要讲一下个人在使用过程中方案选择和优化过程，已做记录。顺便提下，开源很多意味着坑，还是要开实际需求。1. 方案选择1 TextMeshProUnity 最近公布收购了TextMeshPro并且免费开源给大家使用，估计还需要几个小版本才会完全融合到Unity中或者保持现在的状态。TextMeshPro支持效果丰富，兼容现在UI层级等，性能也可以满足移动端，但是很纠结的是： 现在的版本生成的字体库实在太大了，比较全的汉字字库生成TextMeshPro需要的字库之后已经接近17M，如果考虑到游戏中存在2种字体，估计会超过20M的常驻内存在移动端，这个至少现在还很难接受。 另外一个文字是序列化，20M的序列化数据，移动端受IO限制，读取时间会有点长。这个时间长度我没仔细测试过基于上面亮点，最后我还是没有采用这种方案，如果Unity考虑融合进来，建议修改下字库的使用方式。2 文字和图片独立渲染 文字和图片采用layout的方式控制渲染位置，最后会生成大量的Text和Sprite，实时计算位置信息，比如：RichText，这里面最大的问题可能会再CPU端造成不必要的浪费。 文字中留空间，图片再这个空间单独渲染。Text支持富文本的时候会控制间隔，利用这个间隔提供图片位置信息，然后单独渲染图片位置。这种方案Text不需要实时更新，图片（带有动态）需要实时过更新。可以参考这里 Shader中渲染图片：Uwa UGUI表情系统解决方案 直接再shader中渲染图片，这个方案对于outline、shadow时避免图片也被处理的问题没想到好的方案，就放弃了。最后采用了文字富文本保留空间，图片根据位置单独渲染的方案，主要的原因在于性能可控以及现在代码还算比较完善（这里完全是个坑）。这个版本最初的源码：https://code.csdn.net/qq992817263/uguitextpro/tree/master2. 基本原理2.1 基本思想 利用Text富文本占位符为图片保留位置、图片名字、长宽等信息，通过字符解析获取图片相关信息 监听Text重绘以及位置更新等事件，并更新图片位置参考文章Unity Text 插入图片，这篇文章
[<<][[1]][2][3][>>]

查看评论(0)
发表评论

首页