起因:在使用UGUI的时候,在网上找了好久也没找到合适的图文混排组件,但是有看到一篇文章给了我思路。甩个链接:点击打开链接
思路:是通过继承Text组件,然后在Mesh生成的函数里做手脚。但是那篇文章好像有些bug,而且UGUI的代码也是开源的,所以就自己动手了。就是把文本解析之后,把表情所在位置的文本的mesh给隐藏,最后在相应的位置放入我们的图片表情。
开始:新建一个类继承于Text,我命名为ImageText
首先是解析文本,这个很简单,用#表情id#这样的字符串来代表相应的表情图片,然后再用正则匹配出来。如下:
private static readonly Regex m_emojiTagRegex = new Regex(@"#(\d+)#", RegexOptions.Singleline);
接下来就是在重写的OnPopulateMesh函数里用正则提取字符,记录对应的下标,把表情字符替换为中文的“一”字,因为中文字是固定宽度,适合用来放固定宽度的表情图片。
然后调用父类的OnPopulateMesh函数生成相应的mesh,把表情所在字符mesh的顶点uv设置为0,这样就让上面被替换后的“一”字消失了。代码如下:
public s