【Unity】TextMeshProにテキストを代入して表示する方法
TextMeshProにテキストを表示するには、textMeshProInstance.text = "表示したいテキスト";
を使用し、スクリプト内でテキストを指定します
サンプルシーン
ここでは、UI画面に表示する場合と3Dオブジェクトとして表示する場合の例を挙げています。それぞれ使用するクラスが異なるので注意しましょう。
uGUIへ表示する
次のコードでは、アタッチされたスクリプトでのインスペクター上のtextMeshProUGUIに上記ゲームオブジェクトをアウトレット接続(ドラッグ&ドロップ)します
using UnityEngine;
using TMPro;
public class TextMeshProSample : MonoBehaviour
{
public TextMeshProUGUI textMeshProUGUI;
void Start()
{
textMeshProUGUI.text = "aaa";
}
}
方法1: GetComponentを使用する
まず、TextMeshProUGUIコンポーネントがアタッチされているゲームオブジェクトでスクリプトを実行する場合、GetComponent<TextMeshProUGUI>()
を使用してコンポーネントを取得できます。
csharpコードをコピーするusing UnityEngine;
using TMPro;
public class TextMeshProSample : MonoBehaviour
{
private TextMeshProUGUI textMeshProUGUI;
void Start()
{
// 同じゲームオブジェクトからコンポーネントを取得
textMeshProUGUI = GetComponent<TextMeshProUGUI>();
textMeshProUGUI.text = "表示したいテキスト";
}
}
方法2: 他のゲームオブジェクトから取得する
もしTextMeshProUGUIが他のゲームオブジェクトにアタッチされている場合、GameObject.Find()
やtransform.Find()
を使用してゲームオブジェクトを取得し、その後GetComponent<TextMeshProUGUI>()
でコンポーネントを取得します。
csharpコードをコピーするusing UnityEngine;
using TMPro;
public class TextMeshProSample : MonoBehaviour
{
private TextMeshProUGUI textMeshProUGUI;
void Start()
{
// オブジェクト名でゲームオブジェクトを検索
GameObject textObject = GameObject.Find("TextObjectName");
if(textObject != null)
{
textMeshProUGUI = textObject.GetComponent<TextMeshProUGUI>();
textMeshProUGUI.text = "表示したいテキスト";
}
else
{
Debug.LogError("指定したゲームオブジェクトが見つかりません");
}
}
}
注意点:
GameObject.Find()
はシーン内のゲームオブジェクトを名前で検索しますが、パフォーマンスに影響を与える可能性があるため、頻繁な使用は避けてください。- 確実にオブジェクトを取得するためには、インスペクターから参照をアサインするか、[SerializeField]を使用する方法も検討してください。
以上の方法で、ゲームオブジェクトを取得してTextMeshProにテキストを代入し、表示することができます。
3D空間へ表示する
using UnityEngine;
using TMPro;
public class TextMeshProSample : MonoBehaviour
{
public TextMeshPro textMeshPro3D;
void Start()
{
textMeshPro3D.text = "aaa";
}
}
TMP_TextとTextMeshProUGUIとTextMeshProの違い
TMP_Text
、TextMeshProUGUI
、そして TextMeshPro
は、Unityで高品質なテキストを表示するために使用されるクラスです。それぞれの違いを説明します。
TMP_Text
TMP_Text
はTextMeshPro
およびTextMeshProUGUI
の基本クラスです。- これは抽象クラスであり、直接使用されることはありませんが、
TextMeshPro
とTextMeshProUGUI
の共通機能を提供します。 - フォントアセット、テキストの表示、レイアウト、スタイリングなど、テキストに関連する基本的なプロパティとメソッドが含まれています。
TextMeshPro
TextMeshPro
は3D環境で使用されるテキストコンポーネントです。- 主に3Dオブジェクトとしてシーン内に配置され、ビルボードや3Dテキスト効果に利用されます。
- 3D環境でのテキスト表示に特化しており、視覚的な品質が高く、3Dオブジェクトとして扱われます。
TextMeshProUGUI
TextMeshProUGUI
はUIキャンバスで使用されるテキストコンポーネントです。- 主に2D UI要素として使用され、HUD、メニュー、その他のインターフェース要素に利用されます。
- UnityのUGUIシステムと連携しており、2Dの画面空間でのテキスト表示に最適化されています。
簡単に言うと、TMP_Text
は共通の機能を提供する基本クラスであり、TextMeshPro
は3Dテキスト、TextMeshProUGUI
は2D UIテキストに特化したクラスです。開発者は、シーンの要件に応じて適切なコンポーネントを選択することが重要です。クラスであり、TextMeshPro
は3Dテキスト、TextMeshProUGUI
は2D UIテキストに特化したクラスです。開発者は、シーンの要件に応じて適切なコンポーネントを選択することが重要です。
ポリモーフィズムテスト用サンプル
using UnityEngine;
using TMPro;
public class TextMeshProSample : MonoBehaviour
{
// 基本クラス
public TMP_Text tMPro;
// 派生クラス(3D空間表示用)
public TextMeshPro textMeshPro3D;
// 派生クラス(uGUI表示用)
public TextMeshProUGUI textMeshProUGUI;
// ポリモーフィズムテスト用の基本クラス
TMP_Text baseTMPro;
void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha3))
{
baseTMPro = textMeshPro3D;
ShowTextMeshPro(baseTMPro);
}
else if (Input.GetKeyDown(KeyCode.U))
{
baseTMPro = textMeshProUGUI;
ShowTextMeshPro(baseTMPro);
}
}
void ShowTextMeshPro(TMP_Text baseTmpPro)
{
baseTmpPro.text = Random.Range(0, 100).ToString();
}
}
このコードは、UnityでTextMeshPro
を使ったテキストの表示を制御するためのサンプルです。TextMeshPro
は、高品質なテキストレンダリングを可能にするUnityのアセットです。ここでは、3D空間での表示(TextMeshPro
)とUIでの表示(TextMeshProUGUI
)の両方が示されています。コードの各部分を詳細に説明します。
クラスと変数の宣言
using UnityEngine; using TMPro;
は、UnityエンジンとTextMeshPro名前空間を使用するための宣言です。TextMeshProSample
は、このスクリプトのクラス名です。
公開された変数
public TMP_Text tMPro;
は、TMP_Text
型の変数で、インスペクターからアクセス可能です。これはTextMeshPro
の基本クラスです。public TextMeshPro textMeshPro3D;
は、3Dオブジェクトとして使用されるTextMeshPro
のインスタンスです。public TextMeshProUGUI textMeshProUGUI;
は、UI要素として使用されるTextMeshProUGUI
のインスタンスです。
プライベート変数
TMP_Text baseTMPro;
はプライベート変数で、ポリモーフィズムをテストするために使われます。
Updateメソッド
Update()
は毎フレーム呼ばれるメソッドです。- キーボードの
'3'
キーが押された場合(Input.GetKeyDown(KeyCode.Alpha3)
)、baseTMPro
はtextMeshPro3D
のインスタンスを指します。 - キーボードの
'U'
キーが押された場合(Input.GetKeyDown(KeyCode.U)
)、baseTMPro
はtextMeshProUGUI
のインスタンスを指します。 - 次に
ShowTextMeshPro(baseTMPro)
メソッドが呼ばれ、選択されたTextMeshPro
インスタンスにランダムな数字が表示されます。
ShowTextMeshProメソッド
ShowTextMeshPro(TMP_Text baseTmpPro)
は、引数としてTMP_Text
オブジェクトを受け取ります。- このメソッドは、与えられた
TextMeshPro
オブジェクトのテキストをランダムな数字(0から99の間)に設定します。
このコードは、キーボード入力に応じて、3DテキストとUIテキストのどちらかをランダムな数字で更新する方法を示しています。ポリモーフィズムを利用して、TMP_Text
型の変数を使用して異なるTextMeshPro
タイプのインスタンスを操作しています。
ディスカッション
コメント一覧
まだ、コメントがありません