[Unity 3D] TextMeshProのテキストを取得・変更する方法。

(2024/08/05)
[Unity 3D] TextMeshProのテキストを取得・変更する方法。

開発環境
  • Unityのバージョン:2022.3.32f1
  • TextMeshProのテキストを取得する方法

    まず、Hierarchyから、UI→Text - TextMeshProを選択します。するとText (TMP)というゲームオブジェクトがCanvasの子要素として追加されているはずなので位置とサイズを調整し、下の画像のように画面上にテキストを表示させます。表示させるテキストの内容は何でも良いです。

    TextMeshProのテキストを取得・変更する方法。

    このTextMeshProのテキストを取得するには、適当なゲームオブジェクトに以下のコードのスクリプトをアタッチし、InspectorでTextにさっき追加したText (TMP)を割り当てます。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using TMPro; //名前空間を追加
    
    public class Sample : MonoBehaviour
    {
        public TextMeshProUGUI Text;
    
        void Start()
        {
            // TextMeshProUGUIのテキストの内容をConsoleに出力
            if (Text != null)
            {
                string currentText = Text.text;
                Debug.Log(currentText);
            }
    
        }
    } 
    

    エディターを再生するとConsoleにText (TMP)の内容が出力されているはずです。

    「The type or namespace name 'TextMeshProUGUI' could not be found」というエラーが発生する場合

    using TMPro;をスクリプトの最初に追加していないとこのエラーが発生するので、追加してください。

    テキストの内容を変更する方法

    さっきのスクリプトを下のコードのように変更して、エディターを再生すると画面に表示さているテキストのに内容が変わります。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using TMPro;
    
    public class Sample : MonoBehaviour
    {
        public TextMeshProUGUI Text;
    
        void Start()
        {
            // TextMeshProUGUIのテキストの内容を変更
            if (Text != null)
            {
                Text.text = "New Text";
            }
    
        }
    } 
    

    3DオブジェクトとしてのTextMeshProのテキストを取得・変更する方法

    Hierarchyで、UIからではなく3D Object→Text - TextMeshProから生成した、TextMeshProのテキストの内容を取得するには、上のコードの

    public TextMeshProUGUI Text;
    の部分を
    public TextMeshPro Text;
    のように書き換える必要があります。