# 背景
TextMeshProで日本語を使用するときの対応策としてUnityのText Mesh Proでほぼ全ての日本語を表示させるのようにほぼ全ての文字を含めるというやり方があります。
しかし、TextMeshProの利点として個人的に思うことはフォントファイルを配布に含めないことで容量を圧縮できる点にあるのではないかと考えます。
実際、日本語をほぼ網羅した.assetファイルとフォントファイルのサイズを比較すると
- ghatee.ttf ->元のフォントファイル
- test1.asset -> asciiのみ
- test2.asset -> 日本語大体網羅
このようにかなり容量を消費します(サイズはFontAssetCreatorの設定次第で上下しますが)
こうなるとTextMeshProを使用する利点がないかもしれないので、できるだけassetファイルに含める文字コードを減らすようにしたいです。
目的
できるだけassetファイルに含める文字を減らすため、Scene上に存在するText要素を集めて使用されてる文字のみ
を生成するようにするEditor拡張を作る(ました)。
#開発環境
Unity 2018.1.8f.1, .NET 4.x Equivalent , TextMeshPro
#仕様
Scene上に存在する下記のコンポーネントのText情報を集めて使用されている文字コードを一覧を出力します
- UnityEngine.UI.Text
- UnityEngine.TextMesh
- TMPro.TextMeshPro
- TMPro.TextMeshProUGUI
! TextMeshProも含めているでデフォルトのUnityProjectだと動きません。
Scene上のComponentはGameObjectがアクティブ/非アクティブ問わず収集することができます。
- Print Text : Consoleに収集したテキストを表示します
- Load AllScene: BuildSettingに登録されているScene全てから収集します
- Append Chars: 追加したいテキストを設定できます。
Load AllSceneにチェックが入っていない場合は現在開いているシーンからテキストを取得します
#インストール
ここに置いてありますのでよしなに
https://github.com/OhkuboSGMS/TextCollector
#感想
自分が作成しているゲームは,Scene上にあるGameObjectで静的に完結しているので問題がありませんが、動的にネットから取得した情報をテキストに表示したりする場合はこの方法は使えないかもしれませんね...
何か不具合などありましたらIssueかQiitaの方に書いてくれると嬉しいです.