1. 程式人生 > >TextMesh Pro 超鏈接解析失敗

TextMesh Pro 超鏈接解析失敗

pre camera spl mar poi not screen 進入 images

前言

軟件環境

Unity3D 5.3.7p4

TextMesh Pro 1.0.555.0b11(Jul 06.2017)

UGUI做為UI解決方案

文檔資料

TextMesh Pro的資料,可以參考我之前的博客:http://www.cnblogs.com/zhaoqingqing/p/7471499.html

解析超鏈接失敗

查看Textmeshpro的超鏈接示例,默認它是傳入了一個Camera,我後面將參數Camera傳為null。

public void OnPointerClick(PointerEventData eventData)
{
        if
(m_TextMeshPro) { //NOTE 如果UGUI沒用Camera渲染,TMPText不傳入Camera int linkIndex = TMP_TextUtilities.FindIntersectingLink(m_TextMeshPro, Input.mousePosition, null); if (linkIndex != -1) { TMP_LinkInfo linkInfo = m_TextMeshPro.textInfo.linkInfo[linkIndex];
//把解析後的linkId,通過事件發出去 InvokeEvent(linkInfo.GetLinkID(), linkInfo.GetLinkText(), eventData); } } }

具體源碼可以查看TMP_TextUtilities.FindIntersectingLink() 進入到方法:

TMP_TextUtilities.ScreenPointToWorldPointInRectangle(transform, (Vector2) position, camera, out position);

原因分析

如果傳入的camera沒有渲染當前的UI,TMP通過射線去找到當前點擊的區域,返回linkIndex,它會解析失敗。

解決辦法

如果你的UI渲染未使用相機,而是使用Screnn Space 或World Space的話,你可以把最後的Camera參數傳入null,就可以解決。

技術分享

TextMesh Pro 超鏈接解析失敗