はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】TextMeshProの容量を指定した文字だけ入れて減らす手順

はじめに

昔これに似た記事を書いたのですが、今回はさらに簡単にできる手順があったので再度記事にしたいと思います。
(前記事では比較実験もしていますが、今回は手順をつらつらと書いていきます)

www.hanachiru-blog.com

まず前提としてTextMeshProFont Asset Creatorを使ってフォントを独自アセットに変換して利用します。

f:id:hanaaaaaachiru:20210526185602p:plain
TMPでのフォントの変換

この独自アセットを日本語に対応しようとすると数十MBぐらいになってしまうことがあります。

アプリとしてリリースするときは容量が小さいほどダウンロードされやすいと言われたりしますし、これほど容量が大きすぎるとGitにあげられないみたいなことも起こります。

是非これを機に容量削減をしてみてください。

使用する文字を調べる

TextMeshProの独自アセットには画像データが含まれていて,画像のサイズを小さいほど容量を小さくすることができます。

なぜ画像データ?と思うかもしれませんが、TexeMeshProではFont Asset Creatorを通して使用する文字を1枚の画像ファイルにする(アトラス化)からですね。この画像データを利用してテキストの描画を行います。

この画像データを小さくする方法として、画像データに入れる文字を減らすというものがあります。

しかしいちいち自分でゲームで使う文字を調べるのは大変なので、アセットの力を借りましょう。

github.com

こちらのURLに飛び,.unitypackageをダウンロードします。(容量は7kBで,ビルドファイルに含まれないので安心してご利用ください)

f:id:hanaaaaaachiru:20210526190952p:plain
ダウンロード方法

ダウンロードができたら、Unityに先程ダウンロードした.unitypackageをドラッグ&ドロップすればインポートは完了です。


このアセットの使い方は簡単で、Tools -> UsedCharEnumeratorを選択してウィンドウを開きます。

f:id:hanaaaaaachiru:20210526191209p:plain
開き方

あとは以下の画像のように以下の操作を行います。

  1. Asset以下全て検索にチェック
  2. 検索するファイルの拡張子を選択
  3. Searchボタンを押して検索
f:id:hanaaaaaachiru:20210526191533p:plain
使い方

しばらく待つと文字がたくさん表示されると思うので、これをコピーしてFont Asset Creatorで使用していきます。

アセットを作成する

実際にフォントデータからTextMeshProのアセットを作成していきましょう。

Window -> TextMeshPro -> Font Asset Creatorを選択してウィンドウを開きます。

f:id:hanaaaaaachiru:20210526192019p:plain
ウィンドウの開き方

いくつか設定項目がありますが,それぞれの設定を行います。

  • Source Font File : 使うフォントを選択
  • Sampling Point Size : Auto Sizing
  • Padding : 5
  • Packing Method : optimum
  • Atlas Resolusion : 一番大事なので後述
  • Charactor Set : Custom Charactors
  • Custom Charater List : 使用する文字の一覧をコピペ
f:id:hanaaaaaachiru:20210526192623p:plain
設定項目

細かい箇所はデフォルトで良いと思います。

また一番重要な項目がAtlas Resolusionで、これが画像データの縦横の大きさを表しています。

実はいくら画像データファイルに入れる文字を減らしても容量に変化はなく、Atlas Resolusionを減らすことで初めて容量が減ります

しかしAtlas Resolusionを小さくしすぎると,画像内に文字を無理矢理詰め込もうとして文字が汚くなったり読めなくなったりしてしまいます。

f:id:hanaaaaaachiru:20210526235548p:plain
Atlas Resolutionの関係


どこまでAtlas Resolusionを減らすべきかはフォントの種類や文字数,どれくらい容量を減らしたいかによりますが、最終的には実際に目で確認していただくしかありません。

なるべく容量を減らしたいなら、Atlas Resolutionの小さい値からアセットを作成し見た目を許容できるものを見つけていくとよいでしょう。


全ての設定ができたら、Generate Font Atlasをクリックしてアセットを作成すれば完成です。

f:id:hanaaaaaachiru:20210527000853p:plain
生成後