TextMeshPro超链接的使用

首先在TextMeshPro的文字显示中标记为<link ID=内容 等下脚本获取到的>展示内容</link>


新建脚本挂载到有这个TextMeshPro组件的物体上

using UnityEngine;
using TMPro;
using UnityEngine.EventSystems;
using System;

[RequireComponent(typeof(TextMeshProUGUI))]
public class TextMeshProLinkClick :MonoBehaviour, IPointerClickHandler
{
    private TextMeshProUGUI _text;
    private Camera _uguiCamera;
    private Action<string> _action;
    private void Awake()
    {
        _text = this.GetComponent<TextMeshProUGUI>();
        _uguiCamera = GameObject.FindGameObjectWithTag("GuiCamera").GetComponent<Camera>();
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        Vector3 pos = new Vector3(eventData.position.x, eventData.position.y, 0);
        int linkIndex = TMP_TextUtilities.FindIntersectingLink(_text, pos, _uguiCamera);
        if (linkIndex > -1)
        {
            TMP_LinkInfo linkInfo = _text.textInfo.linkInfo[linkIndex];
            if (this._action != null)
            {
                //linkInfo.GetLinkID() 获取的就是ID属性的内容
                this._action(linkInfo.GetLinkID());
            }
        }
    }

    public void SetOnClick(Action<string> callback)
    {
        _action = callback;
    }

    public void RemoveOnClick()
    {
        _action = null;
    }

}

首页 我的博客
粤ICP备17103704号