TextMeshPro
Unityで作るゲームで、ちょっとした飾りのついた数字や文字を表示したい。
けれど、フォトショップ等を使って、飾りのついた文字の画像を作ったり、修正したりするのは手間がかかる。
TextMeshProというアセットを使えば、時間をかけずにUnityEditor上で飾り文字を作れそうなので、試してみる。
https://www.assetstore.unity3d.com/jp/#!/content/17662
このアセットを用いてシーン内で文字を表示するには、あらかじめフォントから画像を生成しておく必要があるようだ。
フリーのフォントとして、以下のものを使用した。
M+ FONTSのmplus-2p-medium.ttf
https://osdn.jp/projects/mplus-fonts/releases/
使う文字を指定する場合は、リストが必要。
以下のサイトのSHIFTJIS_custom_win_bom_utf8.txtを改変して使用させていただく。
http://d.hatena.ne.jp/nakamura001/20120910/1347241168
ゲームであれば、難しい漢字は使わないだろう。画像のサイズを小さくする為に、半角カナ以降の漢字は削除した。
Unityエディタのメニューから「Window」→「TextMesh Pro-Font Asset Creator」を選択する。ウィンドウの以下の項目を変更した。
・Font Source……フォントを指定
・Font Padding……詰め込みたいので5から1に変更(小さい値だと太いアウトラインをつけられなくなるようだ)
・Atlas Resolution……2048×2048に変更
・Character Set……Characters Font Fileに変更
・Character File……テキストファイルを指定
「Generate Font Atlas」ボタンを押下する。
処理の完了まで、数十秒かかる。
「Save TextMeshPro Font Asset」ボタンを押下する。
元のフォントは削除しても問題ないようだ。
使い方
メニューから「GameObject」→「UI」→「TextMeshProText」を選択する。
uGUIのテキストの使い方と似ている。
文字の設定ごとにマテリアルの複製を作る必要がある。
元からあるマテリアルを変更すると、それを使っているテキストの全てに反映されてしまう。
以下の画像では、7種類のマテリアルを作成した(通常の文字用、細めの影付の文字用、「成功」用、「失敗」用、「スタート」用、スコア文字用、数値用)
備考:
アウトラインや影は、uGUIやNGUIより美しく表示される。UVアニメーションができる。拡大してもドットが殆ど目立たない。
7種類の文字を表示できるようにしたことによるapkファイルのサイズの増加は、約2Mb ( 20,860kb→ 23,055kb)