MRが楽しい

MRやVRについて学習したことを書き残す

TextMeshProで日本語を利用する

本日はUnityの技術調査枠です。
TextMeshProで日本語を利用する手順について記事にします。

TextMeshPro

TextMeshProはUnityでテキスト表示を行うためのソリューションです。
docs.unity3d.com

[Text - TextMeshPro]などでTextMeshProを利用する際に、自動でダイアログが開いてプロジェクトにインポートできます。

TextMeshProでインポートされるテキストアセットには日本語が含まれていません。
そのままでは日本語を入力すると以下のような□文字が表示されてしまいます。

TextMeshProで日本語を利用するには日本語を含むフォントアセットを作成する必要があります。

日本語フォントを準備する

フォントアセットを作成するために、ベースとなる日本語のフォントを用意します。
今回は Windows に含まれる[メイリオ]フォントを利用してみました。
C:\Windows\Fonts配下にある以下のMeiryoUIをコピーまたはドロップし、MeiryoUI.ttcを取得します。

他に利用したい日本語フォントがある場合はそのフォントファイルを取得して準備してください。

フォントアセットの作成

TextMeshProの機能を利用してフォントアセットを作成します。
メニューから[Window -> TextMeshPro -> FontAssetCreator]を開きます。

[FontAssetCreator]ウィンドウが開くので以下の通り設定を行います。

SourceFontFile:meiryo(準備したフォントファイル)
SamplingPointSize:Auto Sizing
Padding:5
PackingMethod:Fast
AtlasResolution:4096 4096
CharacterSet:CustomCharacters
SelectFontAsset:None
CustomCharacterList:(利用したい文字コード)

生成されるフォントアセットはファイルサイズが大きくなります。
[AtlasResolution]の値を小さくすることでファイルサイズを小さく調整できますが、フォントの解像度が下がる点に注意が必要です。
今回設定した[4096 4096]の値では生成後のフォントアセットのサイズは40MB前後になりました。

[CustomCharacterList]にはTextMeshProで利用したい文字を全て入力する必要があります。
以下の記事でほぼ全ての日本語文字を網羅した文字セットを公開して下さっている方がいたので今回はこちらの文字セットを用いました。
qiita.com
gist.github.com

設定を完了したら[Generate Font Atlas]を実行し、フォントアセットを作成します。

最後に[Save as..]でフォントアセットを保存すれば作成完了です。

FontAssetを利用する

作成したフォントアセットをTextMeshProコンポーネントの[FontAsset]に設定します。
これでTextMeshProで日本語が利用できるようになりました。