最近在做聊天emoji支持,用的版本是unity 2019.1.8f1
参考了网上多个例子,均出现排版怪异的问题,排查原因后发现是unity新版中不再存储UIText的空格,换行等完整vertex信息,因此,所有通过OnPopulateMesh重新修改text的顶点信息来实现图文混排的算法全部失效.
在这篇帖子中,unity官方给了回复:
https://forum.unity.com/threads/possible-to-revert-to-2018-textgenerator-settings-in-2019.753686/
他们在收购了Text Mesh Pro 后,就推荐大家使用这个插件来做图文混排,而不是自己再造轮子,同时也没有把vertex信息重新加回来的计划(他们觉得存储这些多余的信息是个bug,应该被fix,无语),我测试了最新的Unity2019.2.9f1,确实没有加回来.
尴尬的是,虽然TMP做图文混排确实很方便,几句话搞定,但是并不适合做聊天,因为需要自定义字库,如果是纯英文的或者纯中文的聊天还好,如果是世界聊天,那这个字库就完全没法做了,因为字库只能放在一张2048*2048的图片上,不可能装下所有的世界语言.
因此我只好回退unity版本,经多次测试,确定2019.1.4f1是最后一个存储了完整vertex信息的版本,从2019.1.5f1及往上的版本开始就没有存储完整信息了.
最后我把unity版本降回unity2019.1.4f1解决聊天emoji图文混排的问题.(项目中最终使用了参考链接<1>的解决方案来进行的修改.)
参考链接: