「Assets/Resources/Prefabs」以下のUILabelに設定されたFontを一括で設定できるツールです。Editor拡張で作成。
using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; public class FontReplace : EditorWindow { private UIFont font; [MenuItem("Tools/Replace Font")] public static void ReplaceFont() { EditorWindow.GetWindow(typeof(FontReplace)).Show(); } void OnGUI() { font = EditorGUILayout.ObjectField("UIFont", font, typeof(UIFont), true) as UIFont; if (font != null) { if (GUILayout.Button("Replace font in all assets")) { string title = "Replacing [" + font.name + "]"; EachAsset (title,font); } } } private static void EachAsset(string _title, UIFont _font) { string[] sarchDir = { "Assets/Resources/Prefabs"}; string[] guids = AssetDatabase.FindAssets("", sarchDir); for (int ii = 0; ii < guids.Length; ii++) { string guid = guids [ii]; string guidPath = AssetDatabase.GUIDToAssetPath(guid); EditorUtility.DisplayProgressBar(_title, guidPath, (float)ii / (float)guids.Length); GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>(guidPath); if(go != null) { List<UILabel> uiLabelList = go.GetComponentsInParentAndChildren <UILabel> (); for (int jj = 0; jj < uiLabelList.Count; jj++) { UILabel uiLabel = uiLabelList[jj]; if (uiLabel != null) { uiLabel.bitmapFont = _font; EditorUtility.SetDirty(uiLabel); } } AssetDatabase.SaveAssets(); } } EditorUtility.ClearProgressBar(); } public static class GameObjectExtension { public static T GetComponentInParentAndChildren<T>(this GameObject gameObject) where T : UnityEngine.Component { if(gameObject.GetComponentInParent<T>() != null) { return gameObject.GetComponentInParent<T>(); } if(gameObject.GetComponentInChildren<T>() != null) { return gameObject.GetComponentInChildren<T>(); } return gameObject.GetComponent<T>(); } public static List<T> GetComponentsInParentAndChildren<T>(this GameObject gameObject) where T : UnityEngine.Component { List<T> _list = new List<T> (gameObject.GetComponents<T> ()); _list.AddRange (new List<T> (gameObject.GetComponentsInChildren<T> ())); _list.AddRange (new List<T> (gameObject.GetComponentsInParent<T> ())); return _list; } } }