LoginSignup
2
1

More than 5 years have passed since last update.

[UnityEditor拡張]Scene上のText要素で使用されている文字を集めるやつを作った

Last updated at Posted at 2018-10-13

 背景

TextMeshProで日本語を使用するときの対応策としてUnityのText Mesh Proでほぼ全ての日本語を表示させるのようにほぼ全ての文字を含めるというやり方があります。

しかし、TextMeshProの利点として個人的に思うことはフォントファイルを配布に含めないことで容量を圧縮できる点にあるのではないかと考えます。
実際、日本語をほぼ網羅した.assetファイルとフォントファイルのサイズを比較すると
2018-10-14 07_00_09-新しいフォルダー.png

  • 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情報を集めて使用されている文字コードを一覧を出力します

2018-10-14 07_07_44-Unity 2018.1.8f1 Personal (64bit) - Node2GameObject.unity - EscapeRoomTemplate -.png

  • 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にチェックが入っていない場合は現在開いているシーンからテキストを取得します

使い方

textCollector.gif

インストール

ここに置いてありますのでよしなに
https://github.com/OhkuboSGMS/TextCollector

感想

自分が作成しているゲームは,Scene上にあるGameObjectで静的に完結しているので問題がありませんが、動的にネットから取得した情報をテキストに表示したりする場合はこの方法は使えないかもしれませんね...

何か不具合などありましたらIssueかQiitaの方に書いてくれると嬉しいです.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1