なぜ今、「非エンジニア」からエンジニアになった人材が重宝されるのか?
きたたく
きたたくブログ
TextMeshProを使用して、テキスト内のリンクをクリックすると、そのテキストの詳細情報を表示するプログラムを作成します。以下に、ステップ・バイ・ステップで実装方法を説明します。
<a href="link1">リンク1</a> の部分がリンクになります。この文章には<color=blue><u><a href="link1">リンク1</a></u></color>と<color=blue><u><a href="link2">リンク2</a></u></color>があります。using UnityEngine;
using TMPro;
using UnityEngine.EventSystems;
public class TextLinkHandler : MonoBehaviour, IPointerClickHandler
{
private TMP_Text textMeshPro;
void Awake()
{
textMeshPro = GetComponent<TMP_Text>();
}
public void OnPointerClick(PointerEventData eventData)
{
// リンクの検出
int linkIndex = TMP_TextUtilities.FindIntersectingLink(textMeshPro, Input.mousePosition, null);
if (linkIndex != -1)
{
// リンクがクリックされた
TMP_LinkInfo linkInfo = textMeshPro.textInfo.linkInfo[linkIndex];
string linkID = linkInfo.GetLinkID();
// リンクIDに基づいて処理を行う
Debug.Log("リンクがクリックされました。ID: " + linkID);
ShowDetailInfo(linkID);
}
}
void ShowDetailInfo(string linkID)
{
// リンクIDに対応する詳細情報を表示
switch (linkID)
{
case "link1":
// 詳細情報を表示する処理
Debug.Log("リンク1の詳細情報を表示します。");
DetailPopupManager.Instance.ShowPopup("リンク1の詳細情報です。");
break;
case "link2":
Debug.Log("リンク2の詳細情報を表示します。");
DetailPopupManager.Instance.ShowPopup("リンク2の詳細情報です。");
break;
default:
Debug.Log("未知のリンクIDです。");
break;
}
}
}
Canvas)にアタッチします。popupPanelに「DetailPopup」パネルを、detailTextに「DetailText」テキストをアサインします。HidePopup()メソッドを設定します。
DetailPopupManager > HidePopup()を選択します。using UnityEngine;
using TMPro;
public class DetailPopupManager : MonoBehaviour
{
public static DetailPopupManager Instance;
public GameObject popupPanel;
public TMP_Text detailText;
void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}
public void ShowPopup(string message)
{
detailText.text = message;
popupPanel.SetActive(true);
}
public void HidePopup()
{
popupPanel.SetActive(false);
}
}
TMP_TextUtilities.FindIntersectingLink()は、クリック位置に存在するリンクを検出します。null で問題ありません。しかし、Screen Space – Camera または World Space の場合は、正しいカメラを指定する必要があります。Camera.main を使用してカメラを取得します。以上の手順で、TextMeshProのテキスト内のリンクをクリックすると、そのテキストの詳細情報を表示するプログラムを作成できます。複数のボタンに対しても同様の方法で対応できます。