首先在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;
}
}