原文在这里:https://www.jianshu.com/p/76c45c2f6383
原文中正则表达式"<a href=([^>\n\s]+)>(.*?)(</a>)"的s前面只有一条\,实际应该是两条,这样才能够匹配空格。
扩展Text组件,使用时直接添加HyperlinkText 组件即可,超链接格式为<a href="text">text</a>
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/// <summary>
/// 文本控件,支持超链接
/// </summary>
public class HyperlinkText : Text, IPointerClickHandler
{
/// <summary>
/// 超链接信息类
/// </summary>
private class HyperlinkInfo
{
public int startIndex;
public int endIndex;
public string name;
public readonly List<Rect> boxes = new List<Rect>();
}
/// <summary>
/// 解析完最终的文本
/// </summary>
private string m_OutputText;
/// <summary>
/// 超链接信息列表
/// </summary>
private readonly List<HyperlinkInfo> m_HrefInfos = new List<HyperlinkInfo>();
/// <summary>
/// 文本构造器
/// </su