少年修仙传客户端基础资源
dabaoji
2025-06-09 8ee0256378cbf5dbc9d76ed10b60b65a844ef4dd
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using UnityEngine.UI;
using vnxbqy.UI;
using System.Text;
using System.Linq;
using System;
 
//批量导入文本格式
public class ImportPrefabsWordFormat : EditorWindow
{
 
 
    [MenuItem("策划工具/==批量导入预制体文本格式==", false)]
    private static void Export()
    {
 
        string writePath = "importFontSize.txt";
        if (!File.Exists(writePath))
        {
            return;
        }
 
        string[] lines = File.ReadAllLines(writePath, Encoding.UTF8);
        //按文件分组
        Dictionary<string, List<string>> dic = new Dictionary<string, List<string>>();
        for (int i = 0; i < lines.Length; i++)
        {
            string[] info = lines[i].Split('\t');
            string file = info[0];
            if (!dic.ContainsKey(file))
            {
                dic.Add(file, new List<string>());
            }
            dic[file].Add(lines[i]);
        }
 
        var fileList = dic.Keys.ToList();
 
        int startIndex = 0;
        int changeCnt = 0;
        EditorApplication.update = delegate () {
            if (startIndex >= fileList.Count)
            {
                Debug.LogFormat("文本格式批量修改成功-- 检索{0}行,共替换{1}行", startIndex, changeCnt);
                EditorUtility.ClearProgressBar();
                EditorApplication.update = null;
                startIndex = 0;
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                return;
            }
            var file = fileList[startIndex];
            var singleFilelines = dic[fileList[startIndex]];
            startIndex++;
 
            bool isCancel = EditorUtility.DisplayCancelableProgressBar("导入预制体文本格式-" + fileList.Count, file, (float)startIndex /fileList.Count);
            GameObject _prefab = AssetDatabase.LoadAssetAtPath<GameObject>(file);
            if (_prefab == null)
            {
                Debug.LogFormat("没有此文件 {0} - {1}", startIndex, file);
                return;
            }
            foreach (var line in singleFilelines)
            { 
                string[] info = line.Split('\t');
 
                int index = int.Parse(info[1]);
                string name = info[2];
 
                Text[] transArr = _prefab.GetComponentsInChildren<Text>(true);
 
                if (index >= transArr.Length)
                {
                    Debug.LogFormat("第{0}个替换失败{1} 此文件文本越界", startIndex, file);
                    break;
                }
                Text item = transArr[index];
                if (item.name == name)
                {
 
                    RectTransform rectTransform = item.GetComponent<RectTransform>();
 
                    rectTransform.sizeDelta = new Vector2(float.Parse(info[3]), float.Parse(info[4]));
                    rectTransform.anchorMin = new Vector2(float.Parse(info[5]), float.Parse(info[6]));
                    rectTransform.anchorMax = new Vector2(float.Parse(info[7]), float.Parse(info[8]));
                    rectTransform.anchoredPosition = new Vector2(float.Parse(info[9]), float.Parse(info[10]));
                    rectTransform.pivot = new Vector2(float.Parse(info[11]), float.Parse(info[12]));
                    rectTransform.localScale = new Vector3(float.Parse(info[13]), float.Parse(info[14]), rectTransform.localScale.z);
                    item.fontSize = int.Parse(info[15]);
                    item.alignment = (TextAnchor)Enum.Parse(typeof(TextAnchor), info[16]);
                    item.lineSpacing = float.Parse(info[17]);
                    item.horizontalOverflow = (HorizontalWrapMode)Enum.Parse(typeof(HorizontalWrapMode), info[18]);
                    item.verticalOverflow = (VerticalWrapMode)Enum.Parse(typeof(VerticalWrapMode), info[19]);
                    item.resizeTextForBestFit = bool.Parse(info[20]);
                    item.resizeTextMinSize = int.Parse(info[21]);
                    item.resizeTextMaxSize = int.Parse(info[22]);
 
                    EditorUtility.SetDirty(_prefab);
 
                    changeCnt++;
                }
                else
                {
                    Debug.LogErrorFormat("异常:第{0}行替换失败{1},{2}", startIndex, file, name);
                }
            
            }
                
 
            if (isCancel || startIndex >= lines.Length)
            {
                Debug.LogFormat("文字批量修改成功-- 检索{0}行,共替换{1}行", lines.Length, changeCnt);
                EditorUtility.ClearProgressBar();
                EditorApplication.update = null;
                startIndex = 0;
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }
        };
 
 
    }
 
 
}