/// <summary> /// 删除所有预制体上有guid的miss脚本引用 /// </summary> void DeleteMissScriptWithGUID() { Dictionary <string, HashSet <string> > guid2prefab = null; Dictionary <string, Dictionary <string, string> > prefab2guid2fileID = null; var referenceGuids = GetMissScriptGUID(out guid2prefab, out prefab2guid2fileID); int i = 0; foreach (var scriptGUID in referenceGuids) { EditorUtility.DisplayProgressBar("Processing...", "清理有guid的miss脚本中....", i++ / (float)referenceGuids.Count); var prefabLst = guid2prefab[scriptGUID]; foreach (var prefabPath in prefabLst) { var fileID2guid = prefab2guid2fileID[prefabPath]; foreach (var item in fileID2guid) { if (item.Value == scriptGUID) { var scriptFileID = item.Key; DeleteMissScriptTool.DeleteMissScript(prefabPath, scriptFileID); Debug.LogFormat("prefab:{0},script:{1},guid:{2}", prefabPath, scriptFileID, scriptGUID); } } } } EditorUtility.ClearProgressBar(); }
public static void Func2() { var prefabPath = "F:/WorkFolder/master/client/GameClient_UI/Assets/Resources/prefab/UIItems/Lab/ui_item_tech.prefab"; var scriptFileID = "11418506"; DeleteMissScriptTool.DeleteMissScript(prefabPath, scriptFileID); }
/// <summary> /// 删除所有预制体上没有guid的miss脚本引用 /// </summary> void DeleteMissScriptNoGUID() { string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/Resources/prefab" });//获取所有预制体guid int i = 0; foreach (var prefabGUID in prefabGuids) { EditorUtility.DisplayProgressBar("Processing...", "清理没有guid的miss脚本中....", i++ / (float)prefabGuids.Length); var prefabPath = DeleteMissScriptTool.GetPathByGUID(prefabGUID);//预制体全路径 var scriptFileIDLst = DeleteMissScriptTool.GetScriptNoGUIDFileIDLst(prefabPath); foreach (var fileID in scriptFileIDLst) { DeleteMissScriptTool.DeleteMissScript(prefabPath, fileID); Debug.LogFormat("processed prefab no guid:{0}", prefabPath); } } EditorUtility.ClearProgressBar(); }