[2018/09/16]もともと公開していたCharacter Setの値には常用漢字の抜けがあったようで、別記事にて指摘を頂いたため更新しました。
[2019/07/16]さらにCharacter Setの抜けを指摘頂いたので、別記事へのリンクを追加しました。
Unityでテキストに対してちょっと凝ったエフェクトを加えるときのAssetはText Mesh Proが定番っぽいですが、日本語を扱う方法が見つからなかったのでメモ。
主に以下の動画で説明されていることの日本語まとめです。
Text Mesh Pro - Creating Large Custom Font Asset
Font Asset Creator
Text Mesh Proではttfやotfなどをそのまま扱うことはせず、独自の形式で保存されたassetを扱います。Text Mesh ProにはデフォルトでArial,Bangars,Impactの3種類のフォントのassetが含まれていますが、日本語フォントなどを使うときはfont asset creatorというツールを使用して、ttfやotfからassetを生成する必要があります。
Font Asset Creatorの使用方法
UnityにText Mesh Proが追加してある前提で、メニューからWindow->TextMeshPro - Font Asset Creatorを選択します
このツールは元となるフォントファイルからアトラス画像1を生成するものです。ascii文字のように使用する文字数が少なければデフォルトの設定でもうまく生成できるのですが、日本語のように文字数が多い場合、自分でいい感じの値を設定しないと使えるassetになりません。いくつかコツがあるので列挙します。
-
font source
元となる日本語font(Unityにインポートされたttfかotf)を選択。 -
font size
Auto Sizingだと時間がかかるのでCustom Sizeを選択します。値は48くらい。 -
font padding
5のまま。この値を小さくし過ぎると、後でoutlineなどをつけるときに大きなoutlineなどをつけられない。 -
Packing Method
FastのままでOK -
Atlas Resolution
デフォルトの512512だと日本語全体が収まりきらないので、40964096に変更します。 -
Character Set & Custom Range
ascii・ひらがな・仮名・よく使う漢字を全て登録したい場合はCharacter Setを「Custom Range」に変更し、Custom Range(Dec)に~~ここの値を入力します。2~~[2018/09/16更新]もともと公開しているCharacter Setの値には常用漢字の抜けがあったようなので、こちらのリストを参照してください。[2019/07/16更新]さらに補完してくれた方がいたのでこちらのリストを参照してください。
実際に使う文字が決まっている場合は、Custom Charactersを選択して、使う文字列を貼り付ける方法もあります。 -
Font Style
デフォルトでOK -
Font Render Mode
試しで生成してみる場合はHinted Smoothを選択すると生成が速い。本番用のファイルを生成する場合はDistance Field 16などを選択。 -
Get Kerning Pairs
チェックを外してOK
上記を設定して「Generate Font Atlas」をクリックします。Font Render ModeでDistance Field 16などを選択していると4〜5分ほどかかると思います。
生成結果を見て、Characters packedの値をチェックします。ひらがなの範囲に入っている文字の一部がフォントに含まれていないことがあるため、100%生成されることはないと思いますが、数百文字以上欠けている場合は、アトラス画像にフォントが収まりきらなかった可能性がありますので、Font Sizeの値を小さくしたりAtlas Resolutinoの値を大きくするなどの調整します。
ちなみに私の環境で、ヒラギノ角ゴフォントを試したところ以下のような結果になりました。
最後に「Save TextMeshPro Font Asset」ボタンを押して生成されたassetを保存します。Unityのプロジェクト外のフォルダに保存しようとするとエラーになりますので注意してください。
Text Mesh Proのオブジェクト作成
あとは、Text Mesh Proのオブジェクトをゲーム内に配置するだけです。
メニューのGameObject->3D Object->Text Mesh Proでオブジェクトを作成し、InspectorのFont Setting->Font Assetで先ほど作成したassetを指定します。
Text Input Boxで日本語を入れて、プレビュー画面で無事表示されることを確認します。
まとめ
Unityで日本語にかっこいいフォントエフェクトをつけることができてHappy!
-
複数の画像を1つの画像にまとめたもの ↩
-
よく使う漢字のリストは http://www.tonypottier.info/Unicode_And_Japanese_Kanji/ から拝借しました。 ↩