TextMesh Pro 超鏈接解析失敗


前言

軟件環境

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,就可以解決。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM