using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; [RequireComponent(typeof(TMP_Text))] public class LinkText : MonoBehaviour, IPointerClickHandler { List ClickAction; public void SetLinkAction(List unityActions) { ClickAction = unityActions; } public void OnPointerClick(PointerEventData eventData) { TMP_Text pTextMeshPro = GetComponent(); int linkIndex = TMP_TextUtilities.FindIntersectingLink(pTextMeshPro, eventData.position, eventData.pressEventCamera); // If you are not in a Canvas using Screen Overlay, put your camera instead of null if (linkIndex != -1) { TMP_LinkInfo linkInfo = pTextMeshPro.textInfo.linkInfo[linkIndex]; DebugUtil.Log("OnPointerClick called."); DebugUtil.Log("Link ID: \"" + linkInfo.GetLinkID() + "\" Link Text: \"" + linkInfo.GetLinkText()); //Application.OpenURL(linkInfo.GetLinkID()); if (ClickAction != null && linkIndex < ClickAction.Count) { ClickAction[linkIndex](); } else { DebugUtil.LogError("Link index out of range."); } } } }