皆さんはUnityのTextMesh Proというパッケージを活用していますか?私は恥ずかしながらつい最近使い始めたのですが、uGUIのテキストよりもはるかにキレイなテキストを使えて・しかも高機能なのでとても感動してしまいました。
ただ、TextMesh Proで日本語フォントを使うにあたっては設定が必要で、それが少しわかりにくいので以前の私のように「よく分かんないからuGUIでいいや」と思っている方は多いと思います。…なんともったいない!
そこでここでは、タイトルの通り「TextMesh Proで日本語フォントを使えるようにする方法」を説明していきますね。
TextMesh Proとは?
でははじめに、「そもそもTextMesh Proってなに?」という方のために概要を簡潔に説明しておきます。
TextMesh ProはUnityの公式パッケージの一つで、一言でいうと
です。もちろん、テキストというとUnity標準のUI機能(uGUI)でも使うことができますが、このUnity標準のテキストには
- テキストがぼやける等、お世辞にもキレイとは言えない場合がある
- 文字を装飾したくても制限があって自由に装飾できない
といった問題がありゲーム制作者にとっては悩みの種でした。
そこでこうした問題を一挙に解決すべく開発されたのがTextMesh Proです。TextMesh Proには色々な便利機能があるのですが、uGUIとの一番わかりやすい違いは「文字がぼやけない」ことでしょう。次の画像をご覧ください。
これは同じフォント・同じサイズのテキストで両者を比較した画像です。拡大していただくと分かりやすいのですが、uGUIは汚くぼやけてしまっているのに対して、Text Mesh Proはクッキリと表示されているのが分かりますね。
このように高品質なテキストを表示できるのがTextMesh Proの特徴です。
TextMesh Proの導入方法
次にTextMesh Proの導入方法については、実は最近のUnityであればプロジェクトを作った段階で最初からインストールされています。パッケージマネージャを開いて確認してみましょう。
そして最初にTextMesh Proを使ったゲームオブジェクトを作ると、下のようなウィンドウが出るので「Import TMP Essentials」ボタンをクリックして必要なものをインポートしましょう。
これで必要最低限の準備は完了です。デフォルトでは「LiberationSans」という英字フォントを使うことができます。
フォントアセットの作り方
しかしゲームを作るうえで「別のフォントを使いたいなぁ」と思う場合がほとんどだと思うので、ここで好きなフォントをTextMesh Proで使えるようにする方法をご紹介しておきます。
まず、TextMesh Proではフォントを使うために「フォントアセット」というものを作る必要があります(つまりフォントをプロジェクトにインポートしただけではダメです)。それでこのフォントアセットを作るためにはTextMesh Proの「フォントアセットクリエイター」という機能を使います。
メニューバー→「ウィンドウ」→「TextMeshPro」→「フォントアセットクリエイター」を選ぶとウィンドウが出るので(下図)、ここで設定を行ってフォントアセットを作成しましょう。
今回日本語フォントを使うための具体的な設定値は後述しますが、ここでは設定項目について簡単に説明しておきますね。
- Source Font File:
フォントアセットの元となるフォントのファイル - Sampling Point Size:
この値が大きいとよりキレイなフォントを表示できるが、値が大きすぎると文字がアトラス(後述)に収まらなくなるので適宜調整する必要がある。 - Padding:
アトラスに入っている文字同士の間隔。値が小さすぎると文字の枠線などをつけられなくなるので注意。 - Packing Method:
アトラスに文字を登録するときの方式。基本的には「高速」で十分。登録文字数が多いときに「Optimum」を選ぶと生成にめちゃくちゃ時間がかかる場合がある。 - Atlas Resolution:
アトラス(=文字を登録するためのテクスチャのようなもの)の解像度。大きい値を指定すると、より多くの文字を登録したり解像度の高い文字を登録したりできるが、その分サイズが大きくなってしまう。参考までに、4096×4096でフォントアセットを作ると35MBくらいになる。 - Character Set:
アトラスに含める文字。 - Render Mode:
テキストのレンダリング方法。 - Get Kerning Pairs:
フォントからカーニング(=文字間隔の調整)情報をコピーするか。
設定が済んだら「Generate Font Atlas」ボタンをクリックしてフォントアトラスを作成しましょう(処理にしばらく時間がかかる場合がありますが気長にお待ちください)。完了したら生成されたアトラスを確認して、問題がなければ忘れずに保存してください。
TextMesh Proで日本語フォントを使えるようにする方法
…さて前置きが非常に長くなってしまいましたがここからが本題です。端的に言うとTextMesh Proで日本語フォントを使えるようにするには、日本語フォントのフォントアセットを作ればOKです。では先ほどのフォントアセットクリエイターについて、日本語フォントのフォントアセットを作る場合の具体的な設定値をご紹介しますね。
Source Font File | 好きな日本語フォントを指定 ※フォントのライセンスに注意してください。 |
Sampling Point Size | 日本語の文字をたくさん詰め込む場合は「40」前後で十分。 |
Padding | デフォルトの「5」でOK |
Packing Method | 「Fast」を指定。 |
Atlas Resolution | 4096×4096を指定。 ただし、この項目の値は上のSampling Point Sizeや登録文字数によって最適な値が変わるので適宜調整すること |
Character Set | ※後述 |
Render Mode | SDFAA_HINTEDでOK。必要なら変更してもよい |
Get Kerning Pairs | フォントにもよるが、とりあえずチェックを入れておいても問題はない |
Character Setの指定方法
ところで、設定をしていくと「Character Set」の項目で困ってしまうと思います。このCharacter Setの項目にはアトラスに登録する文字を指定するわけですが、なにせ日本語の文字数は膨大なので一つ一つ自力で登録するわけにはいきません。
そこで便利なのが日本語文字の一覧です。
上のテキストをコピーして
- フォントアセットクリエイターでCharacter Setに「Custom Range」を指定
- そうすると出てくる欄にコピーしたテキストを貼り付け
してください。これでフォントアセットを生成すると次のような感じになると思います。
このように黒い部分(空白)が少しあるということは、すべての文字がきちんとアトラスに収まっていることです。これで日本語のフォントアセットができました!
あとはTextMesh Proのテキストを作り、「Font Asset」欄にこのフォントアセットを指定すれば日本語を使えるようになります。
おわりに
以上、TextMesh Proで日本語フォントを使えるようにするための方法について説明してきました。設定が少し煩雑なので分かりづらい部分もあると思いますが、いったんフォントアセットを作ってしまえばあとは高品質なテキストを使い放題なので一手間かける価値は十二分にあると思います。まだuGUIしか使ったことがない方はこの機会にぜひTextMesh Proを使ってみてください。
この記事がゲーム制作のお役に立てば幸いです。