티스토리 뷰

반응형

유니티 텍스트에서 <size> <color>와 같은 태그들이 사용이 되어서 다른 태그들도 사용이 될 줄 알았는데.. <a href>와 같은 태그는 사용이 안되는 이슈가 있었다. 

그래서 찾아보니 TMP에는 <link>를 제공하고있는데 샘플파일을 보고 TMP를 이용해 하이퍼링크를 구현하도록 만들어 보았다. 

사용법은 아래의 코드를 추가하고, TextMeshPro의 text에 컴포넌트를 추가해주면 된다. 

그리고 <link="http://www.google.com">Click here</link> 이런식으로 써주면 Click here을 누르면 빨간색의 주소 페이지를 오픈하게 된다.

 

Google

 

www.google.com

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using TMPro;

public class TMProHyperLink : MonoBehaviour, IPointerClickHandler
{
    TextMeshProUGUI m_TextMeshPro;
    Camera m_Camera;
    Canvas m_Canvas;

    void Start()
    {
        m_Camera = Camera.main;

        m_Canvas = gameObject.GetComponentInParent<Canvas>();
        if (m_Canvas.renderMode == RenderMode.ScreenSpaceOverlay)
            m_Camera = null;
        else
            m_Camera = m_Canvas.worldCamera;

        m_TextMeshPro = gameObject.GetComponent<TextMeshProUGUI>();
        m_TextMeshPro.ForceMeshUpdate();
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        int linkIndex = TMP_TextUtilities.FindIntersectingLink(m_TextMeshPro, Input.mousePosition, m_Camera);

        if (linkIndex != -1)
        {
            TMP_LinkInfo linkInfo = m_TextMeshPro.textInfo.linkInfo[linkIndex];
            Application.OpenURL(linkInfo.GetLinkID());
        }
    }
}
반응형
댓글