Unity Text 插入超链接

本文介绍了如何在Unity中为Text组件添加超链接,包括颜色、点击支持和与图片结合的方法。特别推荐了一篇由作者老师讲解的人工智能教程。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
当前测试版本:Unity 5.2.0

Unity 新 UI 系统中的  Text 组件支持富文本标签,标签包括 b(黑体)、i(斜体)、size(大小)、color(颜色),并不支持超链接以及超链接点击。之前一篇实现了简单的插入图片方法,见《 Unity Text 插入图片》。这里在上一篇的基础上,继续实现插入超链接。

标签

设计超链接自有的标签,这里使用 a 标签来表示超链接,完整的内容如下:
<a href=超链接>文本</a>

颜色支持

让超链接的文本内容,自动变成其他颜色显示,比如通用的蓝色显示。这一步,只需解析超链接标签,提取里面的文本,对其加上颜色标签,然后去掉超链接标签内容。
增加变量声明,代码如下:
1
2
3
4
5
6
7
8
9
10
11
     /// <summary>
     /// 文本构造器
     /// </summary>
     private  static  readonly StringBuilder s_TextBuilder =  new StringBuilder();
 
     /// <summary>
     /// 超链接正则
     /// </summary>
     private  static  readonly Regex s_HrefRegex =
         new Regex(@ "<a href=([^>\n\s]+)>(.*?)(</a>)", RegexOptions.Singleline);
增加获取解析之后的文本方法,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
     /// <summary>
     /// 获取超链接解析后的最后输出文本
     /// </summary>
     /// <returns></returns>
     protected  string GetOutputText()
    {
        s_TextBuilder.Length =  0;
        var indexText =  0;
         foreach (Match match  in s_HrefRegex.Matches(text))
        {
            s_TextBuilder.Append(text.Substring(indexText, match.Index - indexText));
            s_TextBuilder.Append( "<color=blue>");   // 超链接颜色            
 
            s_TextBuilder.Append(match.Groups[ 2].Value);
            s_TextBuilder.Append( "</color>");
            indexText = match.Index + match.Length;
        }
        s_TextBuilder.Append(text.Substring(indexText, text.Length - indexText));
         return s_TextBuilder.ToString();
    }
更改  OnPopulateMesh 方法,替换最终绘制的文本,代码如下:
1
2
3
4
5
6
7
8
9
     protected  override  void OnPopulateMesh(Mesh toFill)
    {
        var orignText = m_Text;
        m_Text = GetOutputText();
         base.OnPopulateMesh(toFill);
        m_Text = orignText;
        
         // ................
    }
用下面的内容进行测试:
1
请立即装备 <a href= mujian>[木剑] </a>武器
效果如下所示:

点击支持

超链接需要支持可点击事件,故要让派生类继承自  IPointerClickHandler 接口。另外,点中超链接文本的位置检测,需要有矩形框来判断,而当文本被折行时,矩形框也要包括下一行的部分。
修改之后的代码如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值