【Unity】TextMeshProの使い方

【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 TextRaycast 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を使っていきましょう。