【Unity】TextMeshProの使い方

ゲーム開発でよく使う箇所をメインに TextMeshPro の使い方をまとめました。
今までの UI.Text
と同じように使うだけでなく、
日本語を表示したり、かっこいいフォントを表示するにはこちらをチェック
導入方法
インポート
TextMeshPro を導入するには、必要なリソースをインポートする必要があります。
1. メニューから Window -> TextMeshPro -> Import TMP Essential Resources
を選びます

2. インポート用ダイアログが開くので、そのまま Import
を押します

シーンへの配置
TextMeshProには2つの種類があります。
3Dオブジェクトとして3D空間に配置する TMPro.TextMeshPro
と、
UIとして Canvas下に配置する TMPro.TextMeshProUGUI
です。

それぞれ、ヒエラルキービューの右クリックメニューからシーンに追加できます。
3D オブジェクト (TextMeshPro)

3D Object -> Text - TextMeshPro
から追加3Dオブジェクトなので、看板や壁の文字として使えます。
UI(2D) オブジェクト (TextMeshProUGUI)

UI -> Text - TextMeshPro
から追加こちらはUIなので、ボタンやパネルなどでも利用可能です。
パラメータ設定
3DとUIで2種類のクラスですが、インスペクターの内容は同じです。
Main Settings

表示テキスト
改行可能Ritch Text
がOnのときは、<color=red>赤い文字</color>
のようにタグが有効になります。
Font Asset
表示するフォントを指定する。
一般的なフォント( *.ttf )ではなく、TextMeshPro専用のフォントアセットが必要
Material Preset
フォント用のマテリアル指定。Assets
フォルダ以下にあるものから選択する。
候補として選択できるものは、ファイル名が Font Asset名から始まるものだけ。
デフォルトの LiberationSans SDF
フォントの場合は、 LiberationSans SDF
で始まるものだけがリストアップされる。
インスペクターの下部に選択したマテリアルの情報が表示されます。
これは Material なので何も考えずに編集してしまうと、
同じ Material Preset を参照しているすべてのテキストに影響して悲惨なことになります。

Outlineなど魅力的な設定がありますが、新しいMaterial Presetを作成してから編集するようにしましょう。
Font Style

B 太字、 Bold
I 斜体、Italic
U 下線、 UnderLine
S 取り消し線、 StrikeThrough
ab 全部小文字化
AB 全部大文字化
SC 文字のサイズをキープしたまま全部大文字化。小文字は小さめの大文字になります。

Font Size
表示するフォントの大きさ。
一行が表示領域がはみ出る場合は改行されてしまう。Auto Size
をONにすると、領域内に収まるサイズに自動調整されます。
Vertex Color
フォントの色。半透明(アルファ)も設定可能
Alignment
フォントの配置方法
右寄せ、左寄せ、センタリングなど
Extra Settings

デフォルトでは折りたたまれて隠されているオプション
中でも Ritch Text と Raycast Target は要注意
Ritch Text
デフォルトでON。<color=red>赤い文字</color>
のようにタグが有効になります。
名前やコメントなど、ユーザーが自由に入力できるテキストではOFFが基本。
ONのままだと、色変えたりフォントサイズ変えたりやりたい放題。
悪意あるユーザーが見えないタグ挟んでNGワード回避したり悲惨なことになりかねないです。
Raycast Target
当たり判定の有無。
デフォルトでONなので、UIではタッチ入力をブロックしてしまう。
文字の近くで入力判定取れない謎の領域があったらだいたいコレが原因。
Extra Settingsは畳まれてるので見落としがちです。
文字をタッチするような場合以外は基本OFFがオススメ
まとめ
TextMeshProを使うには
- 最初にリソースのインポートしておく
- TextMeshProオブジェクトをシーンに配置
- インスペクターで、フォントの設定を調整する
- 当たり判定を取らないなら、Raycast Target をOFFにする
Unity 2021 から UI.Text が Legacy 扱いされて、テキスト周りは TextMeshPro が正統後継者になりました。

Button などもTextMeshPro対応版が追加されているので、
特別な理由がないかぎりTextMeshProを使っていきましょう。
-
前の記事
ZenjectでUnityのPrefabの外部参照を減らす 2022.08.10
-
次の記事
【Unity】TextMeshProで日本語を表示する 2022.08.17