TMP实现超链接

最近有个需求是在UI上展示一个超链接,玩家点击能跳界面。之前也玩过一些游戏,点击玩家的物品的文字链接,能查看对应玩家的物品。在搜索了一番后得出以下答案。

使用TMP_TextUtilities.FindIntersectingLink可获取给定位置链接的索引。

[RequireComponent(typeof(TMP_Text))]
public class TMP_HyperLink : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        var textMeshPro = GetComponent<TMP_Text>();
        int linkIndex =
            TMP_TextUtilities.FindIntersectingLink(textMeshPro, eventData.position, eventData.pressEventCamera);
        if (linkIndex != -1)
        {
            var linkInfo = textMeshPro.textInfo.linkInfo[linkIndex];
            OpenLink(linkInfo.GetLinkID());
        }
    }


    private static void OpenLink(string linkStr)
    {
        // todo 解析linkStr为想要的参数信息
    }
}

可解析linkStr为想要的参数,比如解析成链接类型与数值,判断链接类型为打开玩家界面,数值就是玩家的id。本想在这里用个Json字符串保存信息,之后发现这个方法并不支持解析多个 ",即使加了转义字符也不行。

返回顶部