- 此插件是基于UGUI所做的图文混排功能,常用于聊天系统的表情嵌入;
- 可支持静/动态表情,支持超链接;
- 实现原理,是基于UGUI的富文本,使用quad标签进行占位;
- 使用了Asset文件来存储本地的表情信息;
- Text根据正则表达式,解析文本,读取相应的表情信息,并在相应位置绘制相应的Sprite;
- 正则表达式为[图集ID#表情标签],图集ID为-ID时,表示此标签为超链接,如-1,图集ID为0时,可省略不写;
- 有同学提过想支持移动端系统自带的表情,我这里只提一个简单的实现思路,集成不看自己的实际需求了,自己备好系统表情的图集,再解析一下当前系统输入表情的正则表达式,然后跟插件一样的嵌入到Text中(这算是正常的集成实现思路么?);
- 选择一张表情图片,导入在unity里,并设置为Texture Type为Sprite(2D and UI);
- 右键选择图片,点击Create/Sprite Asset,创建图集资源;
- 针对Asset文件,可以设置图集的ID、是否为静态表情,和标签等属性,同为一个动态表情的Sprite应该设置为同一个标签;
- 点击菜单栏GameObject/UI/Textline,即可创建UI;
- 在InlineText组件中输入[#emoji_0],即可显示表情;
2018.6.18 优化and fix some bugs
和textmeshpro进行了简单的比较如下: 实例化1-3次(emojiUI): 实例化1-3次(textmeshpro):
实例化10-100次(emojiUI): 实例化10-100次(textmeshpro):
从上面看出初始化方面textmeshpro的开销更大,后续两方单元的开销差异不大(这里只是相对结论,因为没有调控textmeshpro的属性,只是使用默认属性,其2:emojiui初始化的时候会做点pool,与textmeshpro会有些许差异,不过初始化的差异如此之大,上述提到的一些影响因素就应该不是绝对因素了,应该是可以认可初始化差异大的这个结论的)