ArialフォントのTextコンポーネントを洗い出すエディタ拡張【Unity】
概要
WebGLで、デフォルトフォントのArialを使うと日本語が出ない問題がある
Arialを使っているTextコンポーネントの洗い出しがめんどくさい
特に開発終盤になりオブジェクトが増えてきた時。
洗い出しをするエディタ拡張を作る。
動作確認したUnityバージョン
version 2018.2.0f2
使い方
後述のソースコードを、「Assets/Editor」フォルダに入れる。「Editor」フォルダがない場合はフォルダを作成する。
メニュー上部の「Tools/Arialフォント洗い出し」をクリック
ソース
FinderTextHavingArialFont.cs
using System.Linq; using UnityEditor; using UnityEngine; using UnityEngine.UI; namespace CoffeeR{ /// <summary> /// Arialフォントを洗い出すエディタ拡張クラス /// </summary> public class FinderTextHavingArialFont{ [MenuItem("Tools/Arialフォント洗い出し")] static void Exec (){ // シーン中にある、テキストコンポーネント全て取得 var textComponents = UnityEngine.Resources.FindObjectsOfTypeAll( typeof( Text ) ) as Text[]; // Arialな奴の取得 var textsWithArial = textComponents .Where(obj => obj.font.name == "Arial"); // 該当しなければダイアログを出して終了 if(textsWithArial.Count() == 0){ FinderTextHavingArialFont.DrawDialog("問題なし","編集中シーンでフォントがArialのTextはありませんでした。"); return; } // 該当するものがあれば、パスを記録していく。 var explain = "編集中シーンでフォントがArialのTextが見つかりました。"; foreach(var text in textsWithArial){ explain += "\n" + GetHierarchyPath(text.gameObject.transform); } // 該当するオブジェクトのパスをダイアログに表示 FinderTextHavingArialFont.DrawDialog("問題あり", explain); return; } static void DrawDialog(string title, string text){ EditorUtility.DisplayDialog( title, text, "OK" ); } static string GetHierarchyPath(Transform self){ string path = self.gameObject.name; Transform parent = self.parent; while (parent != null){ path = parent.name + "/" + path; parent = parent.parent; } return path; } } }
備考
- コンポーネント初期値の設定はPreset使えば良い
- Unity1週間ゲームジャム向けに作りました。開発終盤なんかのチェックに使うのが良いかと思います。