TextMeshProの文字をスクリプトから変更する方法

unity

TextMeshProにハマったので解決方法を書いておきます。

ミスったコード

UI上のTextMeshProをスクリプトから変更しようと思い以下のコードを書きました。

using TMPro;
using UnityEngine;

public class TtTest : MonoBehaviour
{
    TextMeshPro tt;
    void Start()
    {
        tt = GetComponent<TextMeshPro>();
        tt.text = "失敗小僧咳き込む";
    }
}

しかし、TextMeshProがnullとなってしまい変更できません。

ミスの原因

実はTextMeshProは二種類あります。

  • TextMeshPro
  • TextMeshProUGUI

ゲームシーン用のTextMeshProとUI用のTextMeshProUGUIです。

私はUI上のTextMeshProを変更しようとしたのですが、ゲームシーンのTextMeshProを取得するコードを書いていたんですね。

解決方法

UI用のTextMeshProはTextMeshProUGUIで取得しましょう。

修正後のスクリプト。

using TMPro;
using UnityEngine;

public class TtTest : MonoBehaviour
{
    TextMeshProUGUI tt;
    void Start()
    {
        tt = GetComponent<TextMeshProUGUI>();
        tt.text = "失敗小僧咳き込んだ";
    }
}