[Unity 3d]uGUI-Hypertext (基于UGUI的超链接实现)- GitHub

一个可以自定义规则的 超链接 文本解决方案。

GitHub 上的工程多如繁星,有些好的仓库,但凡不经意间错过了就很难找回,故稍作采撷,希望能帮助到有心人。
本文集以一个小的功能点为单位行文,也便于拾取罢!

简介:

笔者今天推荐的仓库叫 uGUI-Hypertext - UGUI超链接文本组件。
有了它可以在UnityEngine.UI.Text中使任何子字符串可单击

功能:

使用正则在 Text.text 中插入任意数量的任意断言,实现对匹配的子字符串交互的效果,也就是基于正则的 Text 超链接啦

使用:

继承自HypertextBase的类,使用如下签名的 OnClick 方法注册匹配到子字符串的回调。

/// 
/// 指定した部分文字列にクリックイベントを登録します
/// 
/// 子字符串起始位置
/// 子字符串长度
/// 子字符串配色
/// 部分文字列がクリックされたときのコールバック
protected void OnClick(int startIndex, int length, Color color, Action onClick)

然后,在另一个对该 HypertText 感兴趣的脚本中使用如下方法注册事件即可:

   public class RegexExample : MonoBehaviour
    {
        [SerializeField] RegexHypertext text = default(RegexHypertext);

        const string RegexUrl = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
        const string RegexHashtag = "[##][A-Za-zA-Za-z一-鿆0-90-9ぁ-ヶヲ-゚ー]+";

        void Start()
        {
            text.OnClick(RegexUrl, Color.cyan, url => Debug.Log(url));
            text.OnClick(RegexHashtag, Color.green, hashtag => Debug.Log(hashtag));
        }
    }

这样一来,字符串中存在了匹配的子字符串,当这些子字符串被点击后,就会执行 Start 方法中注册的回调啦,在示例中是输出匹配的字符串,

演示:

HypertText

链接:

setchi/uGUI-Hypertext: Hypertext for uGUI

结语:

在很多时候都会用到这个功能,比如在教育软件中常见的单词翻译功能,把需要翻译的单词高亮,然后点击就去翻译。当然还有其他妙用啦,反正就像是嵌入在文本中的按键,想搞啥事情还不是你的脑洞说了算~

扩展阅读:

正则表达式实战入门-PDF书签诞生记 -

本文集持续更新ing,喜欢记得点赞关注哦!

你可能感兴趣的:([Unity 3d]uGUI-Hypertext (基于UGUI的超链接实现)- GitHub)