三国卡牌客户端基础资源仓库
hch
8 天以前 e35c8e096041b3cf97d91677bf8d6c4587223a9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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();
            }
        };
    }
    
 
  
}