sunarit’s blog

Unity開発の備忘録

【オススメ!】Text Mesh Pro

Unityでテキストメッシュ(Create -> 3D Object -> 3D Text)を使ったことがある方なら知ってると思いますが、なぜかエッジがボケます。
フリーフォントRounded M+をUnityに放り込んで、テキストメッシュを何も考えずに配置してみたのが下の画像です。
f:id:sunarit:20160225055515p:plain
見事にエッジがボケています。
これを直す方法として、「Font Sizeを思いっきり上げる & Character Sizeを思いっきり下げる」を満足いくまで繰り返す、というやり方があります。この方法を用いた結果が下の画像です。

f:id:sunarit:20160225055538p:plain
プレイヤーに不快感を与えない程度には修正できたかな、という感じです。

ここでふと、「なんなの、この作業!? 時間の無駄じゃないの!?」と思った方は、「Text Mesh Pro」を使えば一発解決できてしまいます。
下の画像は、「Text Mesh Pro」で作成した文字列のフォントサイズを調整し、ただ単に配置したものです。
f:id:sunarit:20160225055557p:plain

Font SizeやCharacter Sizeを調整し、試行錯誤していたのがバカバカしくなります。
もちろん、スクリプトからランタイムで変更するのも簡単です。Unity標準のテキスト関連メソッドとかなり似通ってますので、特に意識することなく使いこなせると思います。また、独自タグによる動的な色変えも簡単にできますし、グロウやベベルといった文字装飾にも対応しています。文字装飾機能を減らした軽量なモバイル用のシェーダも搭載しているので、UIも3Dテキストもテキスト関連ならなんでもござれ、というくらい万能なアセットです。

が、ひとつだけ気になる点があるとすれば、メモリ使用量が若干増えるというところです。というのも、この「Text Mesh Pro」は、付属のフォント作成機能を利用しフォント一覧のテクスチャーアトラスを生成して初めて使用できるようになるため、このテクスチャーのサイズに応じてメモリ使用量があがります。
日本語の常用漢字すべてをテクスチャー化する場合、2048 x 2048、もしくは4096 x 4096くらいのテクスチャーを生成しないとエッジがボケてしまいます。何らかの理由で数十メガバイトクラスの小さめのゲームを作らなければならない場合やメモリー使用量にシビアな場合には、あらかじめ使用する日本語文字を特定しておいて、それら必要な文字だけを512 x 512程度でテクスチャー化する、とっいたような昔のゲーム開発で用いられていたような工夫が必要となってくると思います。

現時点(2016/2/24)で未だにベータ扱いですが、すでに1年以上に渡り使用しており、バージョンアップも早く、今となってはなくてはならないアセットのひとつです。むしろ、このアセットが使えなくなったら、途方に暮れるレベルにまで依存してしまっています。正直な気持ちとしてはUnity側で3Dテキストのボケ問題に対して何らかの対応するべきだと思うのですが、何年も前から指摘されているにも関わらず未だに対応されていないことを考えると、「Text Mesh Pro」を購入してしまうのが精神衛生的にも良いと思われます。

価格は65USDと、安い部類ではありませんが、機能と便利さから考えれば決して高いとは思えません。uGUIの登場によって、UI目的では必要性が減ったとも言えますが、3D空間上にテキストを表示したいのであれば、「オススメ!」というよりも、「必須」ではないかと思います。

Asset Store