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

ゲームであれば、難しい漢字は使わないだろう。画像のサイズを小さくする為に、半角カナ以降の漢字は削除した。

文字コードUTF-8でないとダメ。

 

Unityエディタのメニューから「Window」→「TextMesh Pro-Font Asset Creator」を選択する。ウィンドウの以下の項目を変更した。

 

・Font Source……フォントを指定

・Font Padding……詰め込みたいので5から1に変更(小さい値だと太いアウトラインをつけられなくなるようだ)

・Atlas Resolution……2048×2048に変更

・Character Set……Characters Font Fileに変更

・Character File……テキストファイルを指定

 

f:id:pmot:20160130133804p:plain

 

「Generate Font Atlas」ボタンを押下する。

処理の完了まで、数十秒かかる

「Save TextMeshPro Font Asset」ボタンを押下する。

元のフォントは削除しても問題ないようだ。

 

使い方

メニューから「GameObject」→「UI」→「TextMeshProText」を選択する。

uGUIのテキストの使い方と似ている。

文字の設定ごとにマテリアルの複製を作る必要がある。

元からあるマテリアルを変更すると、それを使っているテキストの全てに反映されてしまう。

 

以下の画像では、7種類のマテリアルを作成した(通常の文字用、細めの影付の文字用、「成功」用、「失敗」用、「スタート」用、スコア文字用、数値用)

 

f:id:pmot:20160130135439p:plain

 

備考:

アウトラインや影は、uGUIやNGUIより美しく表示される。UVアニメーションができる。拡大してもドットが殆ど目立たない。


手持ちのAndroidタブレットでも動作を確認できた。

7種類の文字を表示できるようにしたことによるapkファイルのサイズの増加は、約2Mb ( 20,860kb→ 23,055kb)

f:id:pmot:20160130142339j:plain