You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#if UNITY_EDITOR
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
/// <summary>
/// ui工具
/// </summary>
public class ExchangeFont : EditorWindow
{
[MenuItem("UnityExt/UI/更换字体")]
public static void Open()
{
EditorWindow.GetWindow(typeof(ExchangeFont), true);
}
public Font SelectOldFont;
static Font OldFont;
public Font SelectNewFont;
static Font NewFont;
static float NewLineSpacing;
private void OnGUI()
{
SelectOldFont = (Font)EditorGUILayout.ObjectField("请选择想更换的字体", SelectOldFont, typeof(Font), true, GUILayout.MinWidth(100));
OldFont = SelectOldFont;
SelectNewFont = (Font)EditorGUILayout.ObjectField("请选择新的字体", SelectNewFont, typeof(Font), true, GUILayout.MinWidth(100));
NewFont = SelectNewFont;
NewLineSpacing = 1;
NewLineSpacing = EditorGUILayout.FloatField("新行间距", NewLineSpacing);
if (GUILayout.Button("更换选中的预制体"))
{
if (SelectOldFont == null || SelectNewFont == null)
{
Debug.LogError("请选择字体!");
}
else
{
Change();
}
}
if (GUILayout.Button("更换文件夹下所有的预制体"))
{
if (SelectOldFont == null || SelectNewFont == null)
{
Debug.LogError("请选择字体!");
}
else
{
ChangeSelectFloud();
}
}
}
public static void Change()
{
Object[] Texts = Selection.GetFiltered(typeof(Text), SelectionMode.Deep);
Debug.Log("找到" + Texts.Length + "个Text即将处理");
int count = 0;
foreach (Object text in Texts)
{
if (text)
{
Text AimText = (Text)text;
Undo.RecordObject(AimText, AimText.gameObject.name);
if (AimText.font == OldFont)
{
AimText.font = NewFont;
AimText.lineSpacing = NewLineSpacing;
//Debug.Log(AimText.name + ":" + AimText.text);
EditorUtility.SetDirty(AimText);
count++;
}
}
}
Debug.Log("字体更换完毕!更换了" + count + "个");
}
public static void ChangeSelectFloud()
{
object[] objs = Selection.GetFiltered(typeof(object), SelectionMode.DeepAssets);
for (int i = 0; i < objs.Length; i++)
{
string ext = System.IO.Path.GetExtension(objs[i].ToString());
if (!ext.Contains(".GameObject"))
{
continue;
}
GameObject go = (GameObject)objs[i];
var Texts = go.GetComponentsInChildren<Text>(true);
int count = 0;
foreach (Text text in Texts)
{
Undo.RecordObject(text, text.gameObject.name);
if (text.font == OldFont)
{
text.font = NewFont;
text.lineSpacing = NewLineSpacing;
EditorUtility.SetDirty(text);
count++;
}
}
if (count > 0)
{
AssetDatabase.SaveAssets();
Debug.Log(go.name + "界面有:" + count + "个Arial字体");
}
}
}
}
#endif