コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】TextMesh Pro の FontAsset に含めたい文字が変更された時に FontAsset を自動更新できる「TMP_FontAssetUpdater」を GitHub に公開しました

はじめに

TextMesh Pro の FontAsset に含めたい文字が変更された時に
FontAsset を自動更新できる「TMP_FontAssetUpdater」を GitHub に公開しました

開発環境

  • Unity 2018.3.0f2
  • TextMesh Pro 1.3.0

使用例

f:id:baba_s:20181226163642g:plain

TextMesh Pro の FontAsset に含めたい文字を .txt に記載して保存することで
その .txt に記載されている文字だけを含むように FontAsset が自動更新されます

Material Preset を使用している場合も正しく更新されます
複数の FontAsset を一括で自動更新することも可能です

f:id:baba_s:20181226164223g:plain

自動更新の機能を無効化して手動で更新を行うこともできます

使い方

f:id:baba_s:20181226164822p:plain

Project ビューの「Create>TMP_Font Asset Updater Settings」を選択すると

f:id:baba_s:20181226164825p:plain

FontAsset の更新ルールを管理するファイルが生成されるので

f:id:baba_s:20181226164828p:plain

更新対象の FontAsset、元となるフォントデータ、
FontAsset に含めたい文字が記載された .txt を各項目に設定して

f:id:baba_s:20181226164831p:plain

必要に応じて他の項目も Font Asset Creator を使用する時と同様に設定して
「Update」ボタンを押すことで、.txt に記載されている文字だけを含むように
FontAsset が更新されます

f:id:baba_s:20181226164834p:plain

「Is Auto Update」をオンにしておくと、.txt に変更があったタイミングで
FontAsset が自動更新されるようになります

f:id:baba_s:20181226170142p:plain

FontAsset の更新が完了すると Console ウィンドウに結果が出力されます
Missing Characters (フォントに存在しない文字)を確認できます

注意

f:id:baba_s:20181226165458p:plain

Material Preset のファイル名は「【FontAsset のファイル名】_【自由記述】」のように
アンダーバーを使用して命名する必要があります
アンダーバーを使用していない Material Preset は更新の対象外になってしまいます

謝辞

参考リポジトリ

「TMP_FontAssetUpdater」を作成する上で
「Unity TextMeshPro Font Customized Creater」のコードを参考にさせていただきました

フリーフォント

「TMP_FontAssetUpdater」のサンプルには上記のフリーフォントを
使用させていただきました