【Unity】TextMeshProで日本語を表示する

【Unity】TextMeshProで日本語を表示する

TextMeshProで日本語を表示する方法をわかりやすくまとめました。

TextMeshProの初期フォントには日本語が含まれていないため、表示できません。

この四角を駆逐して日本語を表示しましょう。

TextMeshPro自体の使い方や、アウトライン表示などについてはこちらをチェック

日本語フォントアセットの作り方

事前準備

日本語を含むフォントアセットを作るには、日本語フォント( *.ttf ) と日本語の文字リストが必要になります。

日本語フォントのダウンロード
ここでは、無料で使える Google Fonts から日本語フォントダウンロードします。

検索設定で Japanese を指定すると日本語を検索できます。
ここでは、 ZenAntiqueSoft を選択しました。
ダウンロードしたら、zipを解凍し *.ttf ファイルを Unity の Assetsフォルダ下に入れておきます。

日本語の文字リストのダウンロード
日本語は漢字が多いので自分でリストを作るのは大変なので、
GitHubに上がっているものを使うと便利です。
日本語文字コード範囲指定(ascii・ひらがな・カタカナ・第一水準および第二水準(JIS-X0208-1997)に含まれる漢字) · GitHub

右上にある Download ZIP からダウンロード
zip を解凍し、中にある japanese_full.txt を Unity の Assets フォルダ下に置きます。

Font Asset Creatorでフォントアセットを作成

Unityメニューの Window -> TextMeshPro -> Font Asset Creator を開きます。

Source Font File
先程ダウンロードした *.ttf ファイルを指定

Atlas Resolution
生成する画像のサイズを指定します。
指定サイズのテクスチャにすべての文字が書き込まれるイメージです。

大きい値を指定すると、ファイルサイズが大きく、文字が綺麗になります。
小さい値を指定すると、ファイルサイズは小さく、文字がぼやけてしまいます。

ファイルサイズ備考
8192 8192 130MB 大きく表示しても綺麗
4096 4096 36MB よく見るとちょっとぼやけてる
4096 2048 20MB ちょっとぼやけるが読める
2048 2048 11MB めっちゃぼやける。小さい文字だけなら誤魔化せそう
解像度とファイルサイズ

日本語は基本的に 4096 x 4096 あたりが良いと思います。
容量削減が重要な場合は、 4096 x 2048 にするか、
必要な文字だけでテクスチャアトラスを作りましょう。

Character Set
生成する文字列の種類。Characters from File でファイルから読み取るように指定します。

Character File
先程ダウンロードした、japanese_full.txtを指定します。

上記を指定して Generate Font Atlas を押します。
すると生成が始まります。

終わったら Save or Save as ... でファイルに保存しましょう

作ったフォントアセットを指定する

Font Asset から作成したフォントアセットを指定すれば日本語対応完了です。

まとめ

TextMeshProで日本語を表示するために、
Font Asset Creatorを使って、日本語フォントアセットを作成しました。

日本語フォントは、Google Fonts が無料でゲームに組込もできるので便利です。
インターネット上でダウンロードできるフォントはたくさんありますが、
ゲームとして組み込んで良いかどうかは、ものによります。
Google FontsUnity Asset Store でダウンロードできるフォントはゲームに組込OKなので、
利用規約の確認がめんどくさい人はそのへんから持ってくると良いでしょう。

フォントアセット作成時の Atlas Resolution は、
4096 x 4096 あたりから自分のニーズにあったサイズを探し始めましょう。
大きく表示しないなら、もう少し小さくしても大丈夫でしょう。

ただし、アルファベットのみのフォントの場合は
512 x 512で十分なことが多いので大きくし過ぎないように注意しましょう。
何も考えずに最大解像度を指定すると、
それだけでAndroidのパッケージサイズ制限である150MBを超えてしまい、
あとで苦労することになります