1
1
using System . Collections . Generic ;
2
2
using UnityEngine ;
3
3
using UnityEngine . SceneManagement ;
4
+ using static Spiral . EditorTools . DeadScriptsSearcher . Localization ;
4
5
5
6
#if UNITY_EDITOR
6
7
using UnityEditor ;
7
8
namespace Spiral . EditorTools . DeadScriptsSearcher
8
9
{
9
- public class DeadGID
10
- {
11
- public ulong gid ;
12
- public bool showInfo ;
13
- public string entry ;
14
- }
15
-
16
- public class DeadGUID
17
- {
18
- /// <summary>
19
- /// GUID, ассоциированный со скриптом
20
- /// </summary>
21
- public string guid ;
22
-
23
- /// <summary>
24
- /// Все мёртвые объекты со скриптом этого вида
25
- /// </summary>
26
- public List < ObjectID > oids ;
27
-
28
- /// <summary>
29
- /// Все MonoBehaviour со скриптом этого вида
30
- /// </summary>
31
- public List < DeadGID > gids ;
32
-
33
-
34
- // EDITOR WINDOW STUFF
35
- public bool showInfo ;
36
- }
37
-
38
10
public class DeadScripts
39
11
{
12
+ public static DeadScripts instance { get ; } = new DeadScripts ( ) { debug = false } ;
13
+
40
14
public bool debug = true ;
41
15
public List < ObjectID > deadOIDs { get ; private set ; } = new List < ObjectID > ( ) ;
42
- public List < DeadGUID > deadGUIDs { get ; private set ; } = new List < DeadGUID > ( ) ;
16
+ public List < ScriptGUID > deadGUIDs { get ; private set ; } = new List < ScriptGUID > ( ) ;
43
17
private SceneFile sceneFile = null ;
44
18
45
19
// PROPERTIES -----------------------------------------------------------------------------
@@ -82,7 +56,12 @@ public void UpdateDeadList()
82
56
// если на объекте есть мёртвые скрипты - добавляем ObjectID в список
83
57
ObjectID objectID = new ObjectID ( go , debug ) ;
84
58
deadOIDs . Add ( objectID ) ;
59
+
60
+ EditorUtility . DisplayProgressBar ( strProgressBar_SearchDeadObject ,
61
+ strProgressBar_SearchingScene ,
62
+ i * 1f / count ) ;
85
63
}
64
+ EditorUtility . ClearProgressBar ( ) ;
86
65
87
66
// если не найдены
88
67
if ( deadOIDs . Count == 0 )
@@ -100,9 +79,14 @@ public void SearchForDeads()
100
79
sceneFile = new SceneFile ( ) ;
101
80
102
81
// шерстим гиды мёртвых
103
- deadGUIDs = new List < DeadGUID > ( ) ;
104
- for ( int i = 0 ; i < deadOIDs . Count ; i ++ )
82
+ deadGUIDs = new List < ScriptGUID > ( ) ;
83
+ int count = deadOIDs . Count ;
84
+ for ( int i = 0 ; i < count ; i ++ )
105
85
{
86
+ EditorUtility . DisplayProgressBar ( strProgressBar_SearchingSceneFile ,
87
+ strProgressBar_InspectedObject + $ "{ i } / { count } ",
88
+ i * 1f / count ) ;
89
+
106
90
// какой объект мы сейчас инспектируем
107
91
ObjectID oid = deadOIDs [ i ] ;
108
92
@@ -137,19 +121,7 @@ public void SearchForDeads()
137
121
continue ;
138
122
139
123
// GUID найден, создаём учётку для скрипта
140
- DeadGID deadGID = new DeadGID
141
- {
142
- gid = gid ,
143
- showInfo = false
144
- } ;
145
- List < string > entryList = sceneFile . ComponentInfo ( gid ) ;
146
- string entry = "" ;
147
- for ( int e = 0 ; e < entryList . Count ; e ++ )
148
- {
149
- entry += entryList [ e ] ;
150
- if ( e != entryList . Count - 1 ) entry += "\n " ;
151
- }
152
- deadGID . entry = entry ;
124
+ ScriptInstanceGID deadGID = new ScriptInstanceGID ( gid , sceneFile ) ;
153
125
154
126
// проверяем, есть GUID в списке или нет
155
127
int guidIDX = deadGUIDs . FindIndex ( x => x . guid == guid ) ;
@@ -160,19 +132,14 @@ public void SearchForDeads()
160
132
}
161
133
else // создаём новую GUID-учёткуы
162
134
{
163
- DeadGUID deadGUID = new DeadGUID
164
- {
165
- guid = guid ,
166
- oids = new List < ObjectID > ( ) ,
167
- gids = new List < DeadGID > ( ) ,
168
- showInfo = false ,
169
- } ;
135
+ ScriptGUID deadGUID = new ScriptGUID ( guid , true ) ;
170
136
deadGUIDs . Add ( deadGUID ) ;
171
137
deadGUID . oids . Add ( oid ) ;
172
138
deadGUID . gids . Add ( deadGID ) ;
173
139
}
174
140
}
175
141
}
142
+ EditorUtility . ClearProgressBar ( ) ;
176
143
177
144
if ( debug )
178
145
{
0 commit comments