【Unity】TextMesh Proで禁則処理を実現する

こじゃらこじゃら

日本語の句読点などが行頭に来ないように改行させるはどうすればよいの?

このはこのは

TextMesh Proを使えば簡単だわ!

Unityで行頭禁則行末禁則などの禁則処理をさせる方法の解説記事です。

結論を述べると、TextMesh Proを使用するだけでそのまま実現可能です。

参考:Settings, TextMesh Pro Documentation

カンマやピリオドだけでなく、日本語の句読点や全角括弧などに対応しています。

これらの禁則処理は必要に応じてカスタマイズすることも可能です。

本記事では、TextMesh Proの禁則処理について解説するとともに、カスタマイズする方法についても解説していきます。

動作環境
  • Unity 2022.1.11f1
  • TextMeshPro 3.0.6

スポンサーリンク

前提条件

TextMeshProパッケージおよびTMP Essential Resourcesがインストールされているものとします。

また、日本語フォントが適用されたTextMesh ProテキストがUI上に配置されているものとします。

これらの手順の説明は本記事では割愛させていただきます。

注意

TextMesh Proで日本語を表示するためには、別途日本語に対応したフォントを使用する必要があります。組み込みフォント扱いとなるため、ライセンスには十分ご注意ください。

デフォルトの挙動

TextMesh Proのテキストは、初期設定では自動改行されたときに禁則処理が行われるようになっています。

また、ワードラップ [1] 日本語の句読点、全角括弧などを考慮した禁則処理が行われていることも特徴です。

ただし、ルールに沿わない意図的な改行 [2] が行われている場合はこの限りではありません。

禁則処理の設定箇所

前述の禁則処理は、デフォルトでは以下パスのテキストファイルで定義されています。

行頭禁則[TextMesh Proフォルダ]/Resources/LineBreaking Following Characters.txt
行末禁則[TextMesh Proフォルダ]/Resources/LineBreaking Leading Characters.txt
定義ファイルの格納場所

テキストファイルは次のような中身になっており、日本語の括弧や句読点、撥音、促音、長音などが予め定義されています。

また、これらの禁則処理の定義ファイルは、TextMesh Proの設定ファイル(TMP Settings.asset)Line Breaking for Asian Languages項目から参照される形で設定されています。

もし別の定義ファイルを適用したい場合はこれらの項目を変更すればよいです。

参考:Settings, TextMesh Pro Documentation

禁則の定義の変更

行頭禁則と行末禁則を適用する文字は、定義ファイルを修正したり差し替えたりすることでカスタマイズできます。

例えば、「改」という文字に対して行頭禁則を適用したい場合、以下のように定義ファイルLineBreaking Following Characters.txtに文字を追加すればよいです。

修正内容は、TextMeshPro 3.0.6現在ではUnityを再起動すると反映されるようです。

これで、「改」という文字が行頭禁則の対象として処理されるようになります。

さいごに

TextMesh Proでは、日本語を含む禁則処理が標準でサポートされています。

従来のUI.Textではこのような禁則処理がサポートされていないため、独自の折り返しロジックを実装したりする必要があったことを考えると大きなアドバンテージと言えるでしょう。

参考サイト

スポンサーリンク