Unity替换字体小工具

前一段时间公司要搞字体替换,实在不想做无脑的手动替换工作,就自己写了个替换当前场景下UI字体的小工具,话不多说上硬货。

using UnityEngine;

using System.Collections;

using UnityEditor;

using UnityEditor.SceneManagement;

using UnityEngine.UI;


public class MyText : EditorWindow {


[MenuItem("Tools/替换字体")]

public static void Open()

{

EditorWindow.GetWindow (typeof(MyText));

}

Font change;

static Font changeFont;

Font toChange;

static Font toChangeFont;

void OnGUI()

{

change = (Font)EditorGUILayout.ObjectField ("目标字体",change, typeof(Font), true, GUILayout.MinWidth (100f));

changeFont = change;

toChange = (Font)EditorGUILayout.ObjectField ("更换字体",toChange, typeof(Font), true, GUILayout.MinWidth (100f));

toChangeFont = toChange;

if (GUILayout.Button ("更换")) 

{

ChangeText ();

}

}

public static void ChangeText()

{

Transform canvas = GameObject.Find("Canvas").transform;

if (!canvas)

{

Debug.Log("sence no canvas");

return;

}

Transform[] tArray = canvas.GetComponentsInChildren();

for (int i = 0; i < tArray.Length; i++) 

{

Text t = tArray [i].GetComponent ();

if (t) 

{

Undo.RecordObject (t,t.gameObject.name);

if (t.font == changeFont) 

{

t.font = toChangeFont;

Debug.Log ("替换成功" + t.gameObject.name);

EditorUtility.SetDirty (t);

}

}

}

}


}

你可能感兴趣的:(Unity替换字体小工具)