基于Unity2019版本的UGUI图文混排组件

这是一个基于Unity2019.4.1f1版本的图文混排组件,支持静态表情、动态表情、超链接和多图集加载。组件适用于学习,可能存在不完善之处,用户可自行修改源码。核心脚本为EmojiText.cs,通过重写Text的OnPopulateMesh方法来处理Unity2019及以上版本中因文本优化导致的顶点信息缺失问题,确保图文混排的准确无误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该组件是基于Unity2019.4.1f1版本的图文混排组件,实现了静态表情,动态表情,超链接,多图集加载等功能。该组件属于学习用途,不完善的地方可以提取源码自行修改。其中关于超链接点击响应部分关于lua的消息广播如果报错可以自行注释或者删除。该组件核心脚本EmojiText.cs,原理和以往的图文混排组件一样重写Text的OnPopulateMesh(VertexHelper toFill)函数,但是因为unity2019中的某个版本往上的版本unity优化了text,在某些情况下不在存储完整的顶点信息,例如富文本,空格等信息的顶点信息会缺失,该组件规避了这个缺点,文本正则匹配标签的时候替换掉被unity优化的内容去计算顶点和占位符信息,重写OnPopulateMesh函数的时候,同时也去除有可能会被unity优化的顶点信息,这样就可以保证顶点信息的统一,规避了因为unity的优化规则引起的顶点的缺失导致的文本顶点信息计算出现的偏差错漏。

富文本等替换代码:

        private string ReplaceRichText(string str)
        {
   
            str = Regex.Replace(str, @"<color=(.+?)>", "");
            str = str.Replace("</color>", "");
            str = Regex.Replace(str, @"<size=(\d)>", "");
            str = str.Replace("</size>", "");
            str = str.Replace("<b>", "");
            str = str.Replace("</b>", "");
            str = str.Replace("<i>", "");
            str = str.Replace("</i>", "");
            str = str.Replace("\n", "");
            str = str.Replace("\t", ""
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值