public static void UpdateDeadList() { SceneFile.ReloadCurrentSceneFile(); var objects = SceneManager.GetActiveScene().CollectScene().ToGameObjects(); int count = objects.Count; if (deadOIDs == null) { deadOIDs = new List <ObjectID>(); } else if (deadOIDs.Count != 0) { deadOIDs.Clear(); } for (int i = 0; i < count; i++) { float progress = i * 1f / count; EditorUtility.DisplayProgressBar(strProgressBar_SearchDeadObject, strProgressBar_SearchingScene + $"{i} / {count} " + strProgressBar_SearchingSceneObjects, progress); GameObject go = objects[i]; int missings = GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(go); if (missings == 0) { continue; } // мы создаём ObjectID в этом режиме ТОЛЬКО для объектов, у которых // обнаужены MissingScripts, чтобы обыск сцены не занимал слишком много // времени ObjectID objectID = new ObjectID(go, isDebugMode); deadOIDs.Add(objectID); } EditorUtility.ClearProgressBar(); if (deadOIDs.Count == 0) { Debug.Log($"<color=green>Everything is okay :)</color>"); } }
private void OnGUI() { titleContent.text = strMonoView_Caption; scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Height(position.height)); OpenStandartBack(); SpiralLocalization.DrawLanguageSelect(); SceneFile.DrawSceneReloadButton(); if (oids.Count == 0) { EditorGUILayout.LabelField(strMonoView_SelectObject, labelOption); } for (int objIDX = 0; objIDX < oids.Count; objIDX++) { DrawObject(oids[objIDX]); } CloseStandartBack(); EditorGUILayout.EndScrollView(); }