2024年1月2日发(作者:)

{ action(element,i); i += 1; }

} public static void ForEach(this IEnumerable source, Action action) { foreach (T element in source) { action(element); }

} static HashSet findAllScriptUUIDsInAssets() { var uuids = es("Assets/", "*.", ectories) .Select(p => { return lLines(p)[1].Substring(6); }).ToList(); //find dll uuids var dlluuids = es(ationContentsPath, "*.dll", ectories) .Select(p => { return athToGUID(e('', '/')); }).Where(s => s!= "").ToList(); return new HashSet((dlluuids)); } static Regex s_scriptUUIDReg = new Regex(@"m_Script: {fileID: [0-9]+, guid: ([0-9a-f]{32}), type: 3}"); static string getScriptUUID(string line) { var m = s_(line); if (s) { return [1].Value; } if(ns("m_Script: {fileID: 0}")) //missing script { return "0"; } return null; } { var allPrefabs = es(dir, "*.prefab", ectories); onBeginFinding(); Dictionary> r = new Dictionary>();

for (int i =0;i<;++i) { onFinding(i, allPrefabs[i],); lLines(allPrefabs[i]).ForEach(line => { string s = getScriptUUID(line); if (s != null) { HashSet files = null; Value(s, out files); if (files == null) { files = new HashSet(); (s, files); } (allPrefabs[i]); static Dictionary> findAllPrefabScriptRefInDir(string dir,Action onBeginFinding,Action onFinding, Action onEndFinding

(allPrefabs[i]); } }); } onEndFinding(); return r; } private static void FindMissionRefInGo(GameObject go) { var components = ponents(); foreach (var c in components) { // Missing components will be null, we can't find their type, etc. if (!c) { var assetPath = etPath(go); if(assetPath != "" && assetPath != null) { or("missing script: " + GetHierarchyName(orm) + "-->" + assetPath); } else { or("missing script: " + GetHierarchyName(orm)); } continue; } } foreach(Transform t in orm) { FindMissionRefInGo(ject); } } public static IEnumerable SceneRoots() { var prop = new HierarchyProperty(jects); var expanded = new int[0]; while ((expanded)) { yield return lue as GameObject; } } [MenuItem(MENU_ROOT + "search in scene")] public static void FindMissingReferencesInCurrentScene() { var objs = SceneRoots(); int count = (); hI((prefab, i) => { yProgressBar("check missing prefabs", ng(), (float)i / count); FindMissionRefInGo(prefab); }); rogressBar(); } [MenuItem(MENU_ROOT + "search in all assets")] public static void MissingSpritesInAssets() { var allScriptsIds = findAllScriptUUIDsInAssets(); var refScriptIds = findAllPrefabScriptRefInDir("Assets/", (count) => { yProgressBar("scanning","",0); }, (idx,file,count) =>