TextMeshProのコンポーネント


投稿日:2024年1月10日 | 最終更新日:2024年3月20日

TextMeshProUGUIコンポーネント

UnityのUIオブジェクトとしてテキストを表示するためのコンポーネントです。
ヒエラルキーウィンドウ上の右クリックから、「Create> UI > Text-TextMeshPro」を選択すると、
TextMeshProUGUIコンポーネントが追加されたオブジェクトが作成されます。

Text

表示テキストの指定。

名前 詳細
Text 表示テキスト。リッチテキストタグが使用可能
Enable RTL Editor テキストを左から右ではなく、右から左に表示する。アラビア語圏などで使用する機能です。
反転されたテキストを表示して直接編集できる追加の入力フィールドが表示されるようになります。
テキストは表示前に反転されます。
Text Style スタイルシートで設定したテキストスタイルを選択して設定可能

Font

使用するフォントと基本的なフォント属性 (サイズ、スタイルなど) を指定します。

名前 サブ項目 詳細
Font Asset 使用するフォントアセット
初期値はプロジェクト設定で設定可能
Material Preset 使用するマテリアル
Font Style テキストの表示スタイル
「ab, AB,SC」はどれか一つしか選べませんが、他は任意に組み合わせて使用できます。
B 太字。
太さの詳細は、フォントアセットのFontWeightで調整できます
I 斜体。
外観の詳細は、フォントアセットのFontWeightで調整できます
U 下線。
Line Metricの「Under Line Offset」の位置に線が描画されます
S 取り消し線。
Line Metricの「Strikethrough Offset」の位置に線が描画されます
ab 小文字。表示のみ小文字にします
AB 大文字。表示のみ大文字にします
SC スモールキャピタル。小文字を大文字として表示しますが、文字の大きさは小文字のままで表示します。
Font Size テキストの表示サイズ

Auto Size

「Auto Size」をオンにすると、「FontSize」は手動で設定できなくなり、
「Auto Size Options」で設定したルールに基づいて、テキストの表示領域に合わせてフォントサイズが自動的に設定されるようになります。
テキストがはみ出しそうな場合に、自動的に表示サイズを小さくして表示範囲内に収めるためなどに使います。
ただし、「Auto Size」を設定していると、テキストを更新するたびに内部で「複数回レイアウトを繰り返して適切なサイズを見つけだす」処理を行います。
処理負荷が高いため、頻繁に変更されるテキストでの使用は避けてください

名前 詳細
Min サイズの最小値
Max サイズの最大値
WD% 横方向にだけ(100-指定パーセント以下)の縮小をかける。
通常、これは数字のテキスト表示に対してのみ使用します。
10なら90%まで横幅を縮める。50なら50%まで横幅を縮める
Line 縦に収まるように、行間を指定の数値以下のマイナス補正する。
-20なら、行間のスペースを-20まで補正する

Color

頂点カラーを使用してテキストに色合いを付けます。
均一な色だけでなく、最大 4 色のグラデーションも適用できます。

名前 詳細
Vertex Color テキストのメインカラーを選択します。
Textオブジェクトまたはそのマテリアルで定義されているすべての色とテクスチャはこの色で乗算されます。
Color Gradient グラデーションのオンオフ(下記参照)
Override Tags 有効にすると、リッチテキストタグによるカラー指定を無視して、コンポーネントで設定した色で表示します。

Color Gradient

「Color Gradient」をオンにすると、グラデーションの設定が可能です。
詳細はTextMeshProのカラーグラデーションも参照してください。

名前 サブ項目 詳細
Color Preset グラデーションのプリセットを指定できます
プリセットを適用すると、「ColorMode」と「Colors」に値が表示されます
プリセットを設定したまま値を編集すると、プリセットのアセット本体の値が変更され、それを使用するすべてのテキスト表示に影響します。
Noneを設定するとプリセットは解除されます
Color Mode 適用する色のグラデーションのタイプを選択します。
グラデーションは各文字ごとに適用されます。
Single 基本のVertex Colorを変更する均一なカラー。(グラデーションにはならない)
Horizontal Gradient 横方向に2色でかけるグラデーション
Vertical Gradient 縦方向に2色でかけるグラデーション
Four Corners Gradient 4隅に設定された4色でかけるグラデーション
Colors 位置に対応したグラデーションの各色の設定

Spacing

文字間、単語間、行間、段落間の間隔を制御します。
これらを使用すると、フォントアセットを変更することなく、テキストごとに間隔の微調整をできます。

名前 詳細
Character 1文字同士の間隔
Word 単語の間隔。単語区切りのスペース(全角スペース)の余白が加算される形になります。
Line 行の間隔。改行(改行文字)と自動改行による行間に適用されます。
Paragraph 段落の間隔。改行(改行文字)には適用されますが、自動改行の行間には適用されない。
LineとParagraphは加算されます。

Alignment

表示領域(RectTransformで設定される矩形の範囲)にテキストを配置する方法を制御します。

横の配置

文字の横方向の配置の設定。

名前 詳細 サンプル画像
 Left 左揃え
 Center 中央揃え
 Right 右揃え
 Justified 両端揃え
表示領域の両端に合わせて各行の両端がそろうようにテキストを広げて表示する。
最終行は左揃えとなる。
 Flush 均等割り付け
表示領域の両端に合わせて各行の両端がそろうように文字間を広げて表示する。
最終行も両端が揃うように表示される
 Geometry Center 実際に表示に使用しているジオメトリの真ん中をテキスト表示領域の中央に配置します。
たとえば(句点)のように、本来は左側などに偏って表示される文字があって
通常の中央揃えでは見た目が偏ってしまう場合に使用することがあります。

通常の中央揃え。左に偏って見える。

Geometry Center。実際の見た目の中央に表示される。

名前 詳細
Wrap Mix (W <-> C) JustifiedまたはFlushに設定されている場合に、余白を置く単語の間隔と文字の間隔のバランスを調整します。
単語をスペースで区切る場合に使用するものなので、アジア圏の場合はあまり影響しないものです。

縦の配置

文字を縦方向に配置する際の設定です。
BaseLine、MidLine、Caplineは、一行だけのテキストを表示する時のための機能で、UIボタンなどで使うことを想定しています。
AscentLineやDecentLineなどの配置に使う基準線は、フォントアセットのLineMetricsに設定されています。

名前 詳細 サンプル画像
 Top 上揃え。
テキスト表示領域の上端と、「一行目のAscentLine」を合わせるように表示する。
 Middle 中央揃え。
テキスト表示領域の真ん中と、「一行目のAscentLineと最終行のDecentLineの中間地点」を合わせるように表示する。
 Bottom 下揃え。
テキスト表示領域の下端と、「最終行のDecentLine」を合わせるように表示する。
 BaseLine 一行テキスト用
テキスト表示領域の真ん中に、「一行目のBaseLine」が来るように表示する。
 MidLine 一行テキスト用の中央揃えの一種
実際に表示に使用しているジオメトリの真ん中をテキスト表示領域の中央に配置します。
たとえば、英語の小文字だけを表示する場合などに下側などに偏って見えるのを避ける場合に使用することがあります
その性質上、テキスト内容が変わるとおなじ文字であっても表示位置が変わってしまう点に注意してください。

通常の中央揃え。下側に偏って見える

MidLine。実際の見た目の真ん中に表示される
 Capline 一行テキスト用の中央揃えの一種
テキスト表示領域の真ん中と、「一行目のCaplineとBaseLineの中間」を合わせるように表示します。
「CaplineとBaseLineの中間」と「AscentLineとDecentLineの中間」が
一致しているフォントの場合は「Middle(中央揃え)」と同じ結果になります。
一致せずに文字の中心がずれるときの対策として使用することがあるようです。詳細

補足
思った通りに配置されない場合は、LineMetricがずれている可能性があります。「Line Metrics」の落とし穴も参考にしてください。
特に、フォールバックを使っていて同一テキスト内に複数のフォントアセットがあった場合、複数のLineMetricsが存在してしまうため仕様は複雑になります。
基準線の混在を避けるためには、LineMetricsを統一させた方が良いと思われます。
参考:TextMesh Pro - フォールバック フォントの有無による行の高さの違い - Unity Forum(英語)

Wrapping and Overflow

テキストが表示領域内に収まらない場合の動作を指定します。

名前 サブ項目 詳細 サンプル画像
Wrapping テキストが横幅の表示領域を超える場合に、自動改行するかの設定
Disabled 自動改行をせずに、テキストを表示領域外にはみ出して表示します。
Enabled 自動改行します。
英単語の場合、単語の区切りで改行されますが、行全体より長い単語の場合は単語途中で改行されます。
日本語などの禁則処理に関しては、プロジェクト設定の「Line Breaking for Asian Languages」で設定できます。
Overflow テキストが表示領域内に収まらない場合の文字溢れ処理の指定
Overflow テキストを表示領域の境界を超えて表示します
Ellipsis 省略記号。表示領域を超えるテキストを非表示にし、文末に省略記号 (…) を挿入して、テキストの一部が省略されていることを示します。
Masking マスキング。 文字の一部であっても表示領域内であれば表示し、領域外なら非表示にします。
昔のバージョンでしか動作しない模様。
Truncate 表示領域を超えたテキストを非表示にします。
Wrappingが有効かどうかに関係なく、テキストが表示領域の端から先の文字は非表示になります
Scroll Rect 古い設定で現在未使用。代わりに「Masking」を使用すること
Page テキストを複数のページに切り分け、各ページが表示領域内に収まるようにします。
どのページを表示するかを選択できます。リッチ テキストを使用して手動で改ページを挿入することもできます。
注:縦のAlignmentオプションはページごとに機能します。
Linked 選択したリンク済みの(別の) TextMesh Pro ゲームオブジェクトにテキストの続きを表示させます。
雑誌やWebページで見られるような複数箇所にまたがるテキストを表示できます

UV Mapping

テキストにテクスチャを張り付ける場合の、UVマッピングの設定。
使用するテクスチャの[WrapMode]が[Repeat]に設定されていることを確認してください。そうしないと、テキストに適用したときにテクスチャが大きく歪む可能性があります。

名前 サブ項目 詳細 サンプル画像
Horizontal Mapping UVマッピングの横方向の設定。
Character 1文字ごとにテクスチャを割り当てます。
Line 1行ごとにテクスチャを割り当てます。
Paragraph テクスチャの表示領域の横幅にわたってテクスチャ割り当てます。
Match Aspect 1文字ごとにテクスチャを割り当てます。
その際にテクスチャのアスペクト比を維持し変形しないようにします。
たとえば縦長の文字に割り当てたテクスチャが横に押しつぶされた様にならないようにします。
Vertical Mappingの設定によりどのようにマッピングされるかが決まるため、
Vertical Mappingの方は「Match Aspect」以外の値に設定する必要があります。
Vertical Mapping UVマッピングの縦方向の設定。
Character 1文字ごとにテクスチャを割り当てます。
Line 1行ごとにテクスチャを割り当てます。
Paragraph テクスチャの表示領域の縦幅にわたってテクスチャ割り当てます。
Match Aspect 正常に機能してない模様。
1文字ごとにテクスチャを割り当てます。
その際にテクスチャのアスペクト比を維持し変形しないようにします。
Horizontal Mappingの設定によりどのようにマッピングされるかが決まるため、
Horizontal Mappingの方は「Match Aspect」以外の値に設定する必要があります。
Line Offset 行ごとにU座標をずらして表示するための設定
Horizontal Mappingが「Line、Paragraph、Match Aspect」に設定されている場合
連続する各行のU座標にオフセットを追加します。
この値はシェーダで指定したOffset X 値に追加されます。

Extra Settings

追加の詳細設定です。

名前 サブ項目 詳細
Margins 通常、テキストの表示領域は、RectTrasformの矩形の大きさと同じになりますが
マージン(余白)を設定することで、表示領域を小さくしたり大きくしたりできます。
Left, Top, Right, Bottomにそれぞれ個別に値設定できます。
正の値を設定することで、矩形の内側に間隔が開きテキスト表示領域との間に余白が生まれます。
負の値を設定すると、矩形の外側にテキスト表示領域が広がります。
シーンビューでは、ギズモ表示を有効にしていると、黄色の矩形として表示されます。
黄線の中央の四角いハンドラーをドラッグして領域を視覚的に調整することもできます。
Geometry Sorting 各文字はクワッド(四角系ポリゴン)で表示されます。
ジオメトリ ソートは、 TextMesh Pro がこれらのクワッドをソートする方法を制御します。
これにより、2つのクワッドが重なったときにどのキャラクターが一番上に表示されるかが決まります。
Normal 表示される順序で描画します。
2つの文字が重なると、「後」が「前」の上に表示されます
Reverse 逆順で描画します。
2つの文字が重なると、「前」が「後」の上に表示されます
Is Scale Static オンにすると、テキスト変更時にスケール値が変化しない前提で計算を高速化します。
詳細(英語)
Rich Text オフにすると、リッチテキストのタグ処理を無効化します。タグ記号をそのままテキストとして表示したい場合に利用します。
Raycast Target UIとしての当たり判定。オフにするとクリック等に反応しなくなる。
注:デフォルトはオンですが、以下のようなデメリットがあるため、オフを推奨しているケースが多くあります。
 ・数が多いと負荷が増えてしまう
 ・通常はボタンなどは背景オブジェクトのほうに当たり判定あればよい
 ・意図しないところに当たり判定ができてしまいがち 
Parse Escape Characters バックスラッシュでエスケープされた文字を特殊文字として解釈するかの設定。
たとえば、\nを改行、\tをタブなどとして解釈します。
注:これは、レンダリングされたテキストに適用されます。
 ソースコードでは、エスケープ文字はコンパイラによってすでに解析されています。
Visible Descender プログラムから、maxVisibleCharactersなどを操作してテキストの表示文字数などを変える場合、
Descender(下ライン)を表示文字数に合わせるか、
テキスト本来の状態(すべての文字数を表示している状態)に合わせるかの設定。
オンにすると現在の表示文字数に従って下ラインを判定し、
オフにするとすべての文字を表示している場合に合わせて下ラインを判定します。
特に下揃え(AlignmetのVerticalをBottom)にしていてる場合、影響が強く出ます。
Sprite Asset このテキストが独自に利用するスプライトを設定できます。
Style Sheet Asset このテキストが独自に利用するスタイルシートを設定できます。
Kerning ペアカーニングのオンオフ設定です。
フォントアセットのGlyph Adjustment Tableに設定されている情報に従ってカーニングを行います。
設定された情報がない場合は、オンにしても効果はありません
Extra Padding 文字表示用のポリゴンに追加のパディングを追加するには、このオプションを有効にします。
ポリゴンの端で見切れてしまう文字がある場合に、これで表示の余裕をもたせる。
文字間などには影響しない。
表示がうまくいかない場合の応急処置用?

3Dオブジェクト用のTextMeshProコンポーネント

3D空間上のオブジェクトとしてテキストを表示する場合は、
ヒエラルキーウィンドウ上の右クリックから、「Create>3D Object > Text-TextMeshPro」を選択すると、
「TextMeshPro」コンポーネントが追加されたオブジェクトが作成されます。

基本的な要素はUI用のものと同じです。