Unityでテキストを扱うならTextMeshPro(TMP)は必須です。標準のUI Text比べて、高品質なフォント描画・リッチテキスト対応・メモリ効率の向上など多くのメリットがあります。
この記事では、TextMeshProの導入方法から基本設定、スクリプトを使ったテキスト変更、よくあるエラーの対処法まで、初心者でもわかりやすい形でまとめました。これを読めば、TextMeshProを気軽に扱えるようになります!
この記事でわかること
- TextMeshProの導入方法と基本的な使い方
- 標準のテキストとの違いとメリット
- スクリプトからテキストを動的に変更する方法
- よくあるエラーとその解決策
入力を行いたい方、ボタンと一緒に使いたい方はこちらも参考にしてください。
それでは、本題に入っていきましょう。
UnityのTextMeshPro(TMP)とは?
TextMeshPro(TMP)とは
TextMeshPro(TMP)は、Unity公式が提供する高品質なテキストフリースシステムです。標準のUI TextものTextMeshに比べて、以下の点で優れています。
- 解像度に依存しないシャープなテキスト
- リッチテキスト対応(色・太字・斜体・映像・シナリオなど)
- メモリ効率の改善(標準テキストに比べて処理が軽い)
- 3Dオブジェクト内でも使える
特に、テキストを美しく表示したい場合や、リッチテキストを活用したい場合は必須です。
TextMeshProの導入方法
TextMeshProはUnityの標準であるため、インストールは不要です。
※ ①は行わなくても初めて②を実行するときに「TMP Importer」が表示されます。
①「Window」タブからインポート
- Unityの[Window]→[TextMeshPro]→[Import TMP Essential Resouces]
- Import Unity Packageが開かれるので「Import」を選択

② ゲームオブジェクトの追加
- UIとして追加する場合
- [GameObject] → [UI] → [Text – TextMeshPro]を選択
- 画面上にTMPテキストが表示される
- 3Dオブジェクトとして追加する場合
- [GameObject] → [3D] → [text – TextMeshPro]を選択
- シーン内に3Dテキストが配置される

※ 追加後に「Canvas」というオブジェクトが作成されるので気になる方はこちらを参考にしてください。
TextMeshProの基本的な使い方
TextMeshProの基本的なプロパティはInspectorで設定できます。特によく使用するところだけを説明します。
※ ①、②、⑥は後述します。

①表示するテキスト
②使用するフォント
③太字、斜体等、フォントサイズ④Vector Color:文字の色
Color Gradient:グラデーション
⑤テキストの余白、位置揃え
⑥TextMeshProの表示、非表示
①TextMeshProのテキストを変更する
InspectorでTextMeshProのテキストを静的に変更
Inspectorでテキストを動的に変更できます。

スクリプトでTextMeshProのテキストを動的に変更
スクリプトからテキストを動的に変更できます。以下のコードはサンプルとして記載しております。
using TMPro; //TextMeshProを使用するときに必用
using UnityEngine;
public class TextController : MonoBehaviour {
public TextMeshProUGUI textMeshPro;
void Start()
{
textMeshPro.text = "Hello"; //テキストの変更
}
}
②Font(フォント)の追加
カスタムフォントを使うには、Font Assetの作成が必要です。
Font(フォント)のダウンロード
商用利用かつ無料でも良い方はGoogle Fontを以下のサイトからダウンロードしましょう。
Google Fonts:https://fonts.google.com
Font Assetの作成方法
以下のサイトを参考にしてください。
※ フォントによって表示できない文字もあるので気を付けましょう。
TextMeshProの日本語化対応(多言語化…)
日本語を入力すると「□(豆腐)」になることがあります。これは、Unity標準のフォントに日本語が含まれていないからです。以下のサイトを参考して多言語化対応をしましょう!
※ Font Asset CreatorによりFontを作成し、言語毎に設定する必要があります。
⑥TextMeshProの表示の切り替え
InspectorでTextMeshProの表示を静的に切り替え
InspectorからTextMeshProを動的に表示、非表示ができます。

スクリプトでTextMeshProの表示を動的に切り替え
スクリプトからTextMeshProを動的に表示、非表示ができます。以下のコードはサンプルとして記載しております。
using TMPro;
using UnityEngine;
public class TextController : MonoBehaviour {
public TextMeshProUGUI textMeshPro;
void Start()
{
textMeshPro.enabled = true; //テキストコンポーネントを表示
textMeshPro.enabled = false; //テキストコンポーネントを非表示
textMeshPro.gameObject.SetActive(true); //テキストコンポーネントを含むゲームオブジェクトを表示
textMeshPro.gameObject.SetActive(false); //テキストコンポーネントを含むゲームオブジェクトを非表示
}
}
よくあるエラーと解決策
フォントが表示されない
原因:フォントアセットが設定されていない
解決策:フォントアセットに正しいフォントを適用する。また、「□」のように表示される場合はフォントに文字登録がされていないのでフォントを変更する必要があります。
NullReferenceException : Object reference not set to an instance of an object
原因: TextMeshProコンポーネントが紐づいていない
解決策: InspectorでTextMeshProをアタッチする
まとめ
この記事では、TextMeshProの基本から応用まで解説しました。
TextMeshProは美しいテキスト表示・リッチテキスト対応・スクリプトからの動的変更ができるため、UnityのUIでのテキスト管理に最適です。
・方法導入 → インストールは不要だが、インポートが必要
・基本設定 → フォント・サイズ・リッチテキスト活用
・スクリプト制御 → 動的なテキスト変更と表示、必表示の切り替え