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字符串保存信息,之后发现这个方法并不支持解析多个 "
,即使加了转义字符也不行。