using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEditor;
|
using System.IO;
|
using UnityEngine.UI;
|
|
//根据项目当下情况调整,谨慎使用
|
public class ChangePrefabsFontSize : EditorWindow {
|
|
|
[MenuItem("策划工具/更改字体大小(慎用)")]
|
public static void Open()
|
{
|
EditorWindow.GetWindow(typeof(ChangePrefabsFontSize));
|
}
|
|
|
void OnGUI()
|
{
|
GUILayout.Label("字体");
|
if (GUILayout.Button("更换字体大小:统一+2"))
|
{
|
Change();
|
}
|
if (GUILayout.Button("检测字体和自适应的关系"))
|
{
|
FindSmallRect();
|
}
|
}
|
|
|
public static void FindSmallRect()
|
{
|
string topFilePath = Application.dataPath + "/ResourcesOut/UI";
|
|
|
string[] filepaths1 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
topFilePath = Application.dataPath + "/ResourcesOut/BuiltIn";
|
string[] filepaths2 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
topFilePath = Application.dataPath + "/ResourcesOut/UIComp";
|
string[] filepaths3 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
|
string[] filepaths = new string[filepaths1.Length + filepaths2.Length + filepaths3.Length];
|
|
filepaths1.CopyTo(filepaths, 0);
|
filepaths2.CopyTo(filepaths, filepaths1.Length);
|
filepaths3.CopyTo(filepaths, filepaths1.Length + filepaths2.Length);
|
Debug.LogFormat("预修改预制体字体总数:{0}", filepaths.Length);
|
int startIndex = 0; //文件执行个数
|
|
int a = 0; // 总字体数
|
EditorApplication.update = delegate ()
|
{
|
string file = filepaths[startIndex];
|
file = file.Substring(file.IndexOf("Assets"));
|
bool isCancel = EditorUtility.DisplayCancelableProgressBar("预制体文字-" + filepaths.Length, file, (float)startIndex / (float)filepaths.Length);
|
GameObject _prefab = AssetDatabase.LoadAssetAtPath<GameObject>(file);
|
|
Text[] transArr14 = _prefab.GetComponentsInChildren<Text>(true);
|
a += transArr14.Length;
|
|
foreach (Text item in transArr14)
|
{
|
if (item.verticalOverflow == VerticalWrapMode.Overflow || item.horizontalOverflow == HorizontalWrapMode.Overflow)
|
{
|
var target = item.GetComponent<ContentSizeFitter>();
|
if (target != null)
|
{
|
Debug.LogErrorFormat("存在overflwer和ContentSizeFitter 冲突的预制体 {0} - {1}", file, item.name);
|
}
|
}
|
|
}
|
|
|
startIndex++;
|
|
if (isCancel || startIndex >= filepaths.Length)
|
{
|
Debug.LogFormat("检测字体和自适应的关系--检索{0}个预制体, 字体总个数{1}", startIndex, a);
|
EditorUtility.ClearProgressBar();
|
EditorApplication.update = null;
|
startIndex = 0;
|
AssetDatabase.SaveAssets();
|
AssetDatabase.Refresh();
|
}
|
};
|
}
|
|
public static void Change()
|
{
|
|
string topFilePath = Application.dataPath + "/ResourcesOut/UI";
|
|
|
string[] filepaths1 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
topFilePath = Application.dataPath + "/ResourcesOut/BuiltIn";
|
string[] filepaths2 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
topFilePath = Application.dataPath + "/ResourcesOut/UIComp";
|
string[] filepaths3 = Directory.GetFiles(topFilePath, "*.prefab", SearchOption.AllDirectories);
|
|
string[] filepaths = new string[filepaths1.Length + filepaths2.Length + filepaths3.Length];
|
|
filepaths1.CopyTo(filepaths, 0);
|
filepaths2.CopyTo(filepaths, filepaths1.Length);
|
filepaths3.CopyTo(filepaths, filepaths1.Length + filepaths2.Length);
|
Debug.LogFormat("预修改预制体字体总数:{0}", filepaths.Length);
|
int startIndex = 0; //文件执行个数
|
|
int a = 0; // 总字体数
|
int i = 0; // 更换字体数
|
EditorApplication.update = delegate ()
|
{
|
string file = filepaths[startIndex];
|
file = file.Substring(file.IndexOf("Assets"));
|
bool isCancel = EditorUtility.DisplayCancelableProgressBar("预制体文字-" + filepaths.Length, file, (float)startIndex / (float)filepaths.Length);
|
GameObject _prefab = AssetDatabase.LoadAssetAtPath<GameObject>(file);
|
|
Text[] transArr14 = _prefab.GetComponentsInChildren<Text>(true);
|
a += transArr14.Length;
|
|
bool change = false;
|
foreach (Text item in transArr14)
|
{
|
if (item.fontSize <= 30)
|
{
|
item.fontSize = item.fontSize + 2;
|
change = true;
|
}
|
|
}
|
if (change)
|
{
|
EditorUtility.SetDirty(_prefab);
|
Debug.LogFormat("界面 {0} 字体大小修改成功", file);
|
i++;
|
}
|
|
startIndex++;
|
|
if (isCancel || startIndex >= filepaths.Length)
|
{
|
Debug.LogFormat("字体批量修改成功--检索{0}个预制体, 字体总个数{1},修改{2}", startIndex, a, i);
|
EditorUtility.ClearProgressBar();
|
EditorApplication.update = null;
|
startIndex = 0;
|
AssetDatabase.SaveAssets();
|
AssetDatabase.Refresh();
|
}
|
};
|
}
|
|
|
|
}
|