From b98fd71d35071c95be097153274f3f9e5f0611c5 Mon Sep 17 00:00:00 2001 From: jiaoyangna <3046463818@qq.com> Date: Wed, 28 Jul 2021 17:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=B5=84=E6=BA=90=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ManagedResources/Atlas/UpStarAtlas.meta | 8 - Assets/ManagedResources/BG/Map/Endless2.meta | 8 - Assets/ManagedResources/BG/Map/Endless3.meta | 8 - Assets/ManagedResources/BG/Map/Map3.meta | 10 - Assets/ManagedResources/BG/Map/Map5.meta | 10 - Assets/ManagedResources/BG/Map/Map6.meta | 10 - Assets/ManagedResources/BG/Map/Map7.meta | 10 - Assets/ManagedResources/BG/Map/Map8.meta | 10 - Assets/ManagedResources/BG/Map/Map9.meta | 10 - Assets/ManagedResources/BG/Map/MapFight.meta | 8 - Assets/ManagedResources/BG/Map/Story.meta | 10 - .../~Lua/Modules/UpStarPre.meta | 8 - .../~Lua/linglongbaojing.meta | 8 - .../GameEditor/FrameTool/DeleteResWindow.cs | 263 ++++++++++++++++++ .../FrameTool/DeleteResWindow.cs.meta | 11 + 15 files changed, 274 insertions(+), 118 deletions(-) delete mode 100644 Assets/ManagedResources/Atlas/UpStarAtlas.meta delete mode 100644 Assets/ManagedResources/BG/Map/Endless2.meta delete mode 100644 Assets/ManagedResources/BG/Map/Endless3.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map3.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map5.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map6.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map7.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map8.meta delete mode 100644 Assets/ManagedResources/BG/Map/Map9.meta delete mode 100644 Assets/ManagedResources/BG/Map/MapFight.meta delete mode 100644 Assets/ManagedResources/BG/Map/Story.meta delete mode 100644 Assets/ManagedResources/~Lua/Modules/UpStarPre.meta delete mode 100644 Assets/ManagedResources/~Lua/linglongbaojing.meta create mode 100644 Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs create mode 100644 Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs.meta diff --git a/Assets/ManagedResources/Atlas/UpStarAtlas.meta b/Assets/ManagedResources/Atlas/UpStarAtlas.meta deleted file mode 100644 index 8b6758ff0c..0000000000 --- a/Assets/ManagedResources/Atlas/UpStarAtlas.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fd52b845f4615b2418f482acbcb2d5c6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Endless2.meta b/Assets/ManagedResources/BG/Map/Endless2.meta deleted file mode 100644 index 6adb6b2997..0000000000 --- a/Assets/ManagedResources/BG/Map/Endless2.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9aff0d9872fc9e1469693125c1f2c862 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Endless3.meta b/Assets/ManagedResources/BG/Map/Endless3.meta deleted file mode 100644 index 19c531fb7f..0000000000 --- a/Assets/ManagedResources/BG/Map/Endless3.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: efc97f44d1121b04a82c298cc2f2bd3a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map3.meta b/Assets/ManagedResources/BG/Map/Map3.meta deleted file mode 100644 index 7f1baaa9e3..0000000000 --- a/Assets/ManagedResources/BG/Map/Map3.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: b0f7e0d4b2c88bb48b0eca4a78194329 -folderAsset: yes -timeCreated: 1552113377 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map5.meta b/Assets/ManagedResources/BG/Map/Map5.meta deleted file mode 100644 index d55e4828e3..0000000000 --- a/Assets/ManagedResources/BG/Map/Map5.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 85993f79eed59024d9e637fd94c9f881 -folderAsset: yes -timeCreated: 1553745853 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map6.meta b/Assets/ManagedResources/BG/Map/Map6.meta deleted file mode 100644 index 354b8f6aba..0000000000 --- a/Assets/ManagedResources/BG/Map/Map6.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: ecfc6395934e4694b87e6b3ac204aef6 -folderAsset: yes -timeCreated: 1553745942 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map7.meta b/Assets/ManagedResources/BG/Map/Map7.meta deleted file mode 100644 index 3db7f0c8e1..0000000000 --- a/Assets/ManagedResources/BG/Map/Map7.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: efacd716265078149b4e1bb1298a2b6f -folderAsset: yes -timeCreated: 1553746060 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map8.meta b/Assets/ManagedResources/BG/Map/Map8.meta deleted file mode 100644 index 03c328c189..0000000000 --- a/Assets/ManagedResources/BG/Map/Map8.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: dfd5fb09b0968174ca1b9d2dc08a34ba -folderAsset: yes -timeCreated: 1552113391 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Map9.meta b/Assets/ManagedResources/BG/Map/Map9.meta deleted file mode 100644 index 10e8d67d5e..0000000000 --- a/Assets/ManagedResources/BG/Map/Map9.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: dd8f0b09384a0ae44ac0c9192876c812 -folderAsset: yes -timeCreated: 1560330541 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/MapFight.meta b/Assets/ManagedResources/BG/Map/MapFight.meta deleted file mode 100644 index aeb2392e12..0000000000 --- a/Assets/ManagedResources/BG/Map/MapFight.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 691f605092cae4348b2df83b2299845a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/BG/Map/Story.meta b/Assets/ManagedResources/BG/Map/Story.meta deleted file mode 100644 index 589cc6a75a..0000000000 --- a/Assets/ManagedResources/BG/Map/Story.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: f943e679a5ef49a4990da9059990b18e -folderAsset: yes -timeCreated: 1555905791 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/~Lua/Modules/UpStarPre.meta b/Assets/ManagedResources/~Lua/Modules/UpStarPre.meta deleted file mode 100644 index ff53765e17..0000000000 --- a/Assets/ManagedResources/~Lua/Modules/UpStarPre.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9f6680e5797aa3a4da004c60b970a6d3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ManagedResources/~Lua/linglongbaojing.meta b/Assets/ManagedResources/~Lua/linglongbaojing.meta deleted file mode 100644 index 06c4e01dd6..0000000000 --- a/Assets/ManagedResources/~Lua/linglongbaojing.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 84e5263cf14c3fd42b34d74cee22462e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs b/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs new file mode 100644 index 0000000000..c32841ab3a --- /dev/null +++ b/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs @@ -0,0 +1,263 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace GameEditor.Util +{ + public class DeleteResWindow : EditorWindow + { + static string tag = Environment.CurrentDirectory; + static string tag1 = "Assets/ManagedResources"; + static Dictionary> dic; + static Dictionary> dependDic; + static Dictionary> refrenceDic; + static Dictionary> dependUnUsedDic; + List upLoadPathList; + static string resName = ""; + [MenuItem("资源导入/资源删除")] + static void InitWindow() + { + dic = new Dictionary>(); + dependDic = new Dictionary>(); + refrenceDic = new Dictionary>(); + dependUnUsedDic = new Dictionary>(); + EditorUtility.DisplayProgressBar("建立资源依赖引用关系", "", 0); + SetDependsRefrencesTable(); + EditorUtility.DisplayProgressBar("读表", "", 0); + InitData(); + EditorUtility.DisplayProgressBar("寻找资源", "", 0); + FindRes(); + EditorUtility.DisplayProgressBar("寻找依赖资源", "", 0); + FindUnUsedDepend(); + EditorUtility.DisplayProgressBar("删除资源", "", 0); + DeleteRes(); + EditorUtility.ClearProgressBar(); + } + static void InitData() + { + FileStream fs = new FileStream(tag + "/deleteFile1.csv", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); + StreamReader sr = new StreamReader(fs, System.Text.Encoding.UTF8); + string str = ""; + int index = 0; + while (str != null) + { + str = sr.ReadLine(); + index = index + 1; + try + { + string[] xu = str.Split(','); + for (int i = 0; i < xu.Length; i++) + { + if (!dic.ContainsKey(xu[i])) + dic[xu[i]] = new List(); + } + } + catch + { + Debug.Log(index + "行出错了"); + } + } + sr.Close(); + fs.Close(); + } + static void FindRes() + { + int index = 0; + foreach (KeyValuePair> keyValue in dic) + { + index = index + 1; + string[] guids = AssetDatabase.FindAssets(keyValue.Key, new string[] { tag1 }); + EditorUtility.DisplayProgressBar("寻找资源", keyValue.Key, index * 1.0f / dic.Count); + for (int i = 0; i < guids.Length; i++) + { + string resPath = AssetDatabase.GUIDToAssetPath(guids[i]); + string fileName = Path.GetFileNameWithoutExtension(resPath); + string ext = Path.GetExtension(resPath).ToLower(); + if (keyValue.Key != fileName) + { + continue; + } + dic[keyValue.Key].Add(resPath); + if (ext.Contains("tga") || ext.Contains("jpg") || ext.Contains("png") || ext.Contains("mp3") || ext.Contains("wav")) + { } + else + { + if(dependDic.ContainsKey(resPath)) + { + if (!dependUnUsedDic.ContainsKey(keyValue.Key)) + { + dependUnUsedDic[keyValue.Key] = new List(); + } + dependUnUsedDic[keyValue.Key].AddRange(dependDic[resPath]); + } + } + } + } + } + + static void FindUnUsedDepend() + { + int num = 0; + foreach (KeyValuePair> keyValue in dependUnUsedDic) + { + resName = keyValue.Key; + num = num + 1; + EditorUtility.DisplayProgressBar("寻找依赖资源", resName, num*1.0f/ dependUnUsedDic.Count); + for (int i = 0; i < keyValue.Value.Count;i++ ) + { + FindUnUsedDependByPath(keyValue.Value[i]); + } + } + } + + static void FindUnUsedDependByPath(string resPath) + { + if (refrenceDic.ContainsKey(resPath)) + { + bool isDelete = true; + for (int i = 0; i < refrenceDic[resPath].Count; i++) + { + if (!dependUnUsedDic.ContainsKey(refrenceDic[resPath][i])) + { + isDelete = false; + break; + } + } + if (isDelete) + { + dic[resName].Add(resPath); + } + } + } + + static void SetDependsRefrencesTable() + { + string[] guids = AssetDatabase.FindAssets("t:Prefab", new string[] { tag1 }); + for (int i = 0; i < guids.Length; i++) + { + string resPath = AssetDatabase.GUIDToAssetPath(guids[i]); + EditorUtility.DisplayProgressBar("建立资源依赖关系", resPath, i * 1.0f / guids.Length); + SetDependsTable(resPath); + } + int num = 0; + foreach (KeyValuePair> keyValue in dependDic) + { + num = num + 1; + EditorUtility.DisplayProgressBar("建立资源引用关系", keyValue.Key, num * 1.0f / dependDic.Count); + if (keyValue.Value.Count > 0) + { + for (int i = 0; i < keyValue.Value.Count; i++) + { + if (!refrenceDic.ContainsKey(keyValue.Value[i])) + { + refrenceDic[keyValue.Value[i]] = new List(); + } + refrenceDic[keyValue.Value[i]].Add(keyValue.Key); + } + } + } + } + + static void SetDependsTable(string resPath) + { + if (!dependDic.ContainsKey(resPath)) + { + dependDic[resPath] = new List(); + string[] files = AssetDatabase.GetDependencies(resPath); + for (int j = 0; j < files.Length; j++) + { + dependDic[resPath].Add(files[j]); + if (!dependDic.ContainsKey(files[j])) + { + SetDependsTable(files[j]); + } + } + } + } + + static void DeleteRes() + { + int index = 0; + foreach (KeyValuePair> keyValue in dic) + { + index = index + 1; + EditorUtility.DisplayProgressBar("删除资源", keyValue.Key, index*1.0f/ dic.Count); + for (int i = 0; i < keyValue.Value.Count; i++) + { + string ext = Path.GetExtension(keyValue.Value[i]).ToLower(); + //if (ext.Contains("tga") || ext.Contains("jpg") || ext.Contains("png") || ext.Contains("mp3") || ext.Contains("wav")) + //{ + // if (File.Exists(keyValue.Value[i])) + // { + // File.Delete(keyValue.Value[i]); + // } + //} + if (File.Exists(keyValue.Value[i])) + { + File.Delete(keyValue.Value[i]); + } + } + } + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + static private void FindReferences() + { + Debug.Log("匹配开始"); + EditorSettings.serializationMode = SerializationMode.ForceText; + string path = AssetDatabase.GetAssetPath(Selection.activeObject); + if (!string.IsNullOrEmpty(path)) + { + string guid = AssetDatabase.AssetPathToGUID(path); + var withoutExtensions = new List() { ".prefab", ".unity", ".mat", ".asset" }; + string[] files = Directory.GetFiles(Application.dataPath, "*.*", SearchOption.AllDirectories) + .Where(s => withoutExtensions.Contains(Path.GetExtension(s).ToLower())).ToArray(); + int startIndex = 0; + EditorApplication.update = delegate () + { + string file = files[startIndex]; + + bool isCancel = EditorUtility.DisplayCancelableProgressBar("匹配资源中", file, (float)startIndex / (float)files.Length); + if (Regex.IsMatch(File.ReadAllText(file), guid)) + { + Debug.Log(file, AssetDatabase.LoadAssetAtPath(GetRelativeAssetsPath(file))); + } + + startIndex++; + if (isCancel || startIndex >= files.Length) + { + EditorUtility.ClearProgressBar(); + EditorApplication.update = null; + startIndex = 0; + Debug.Log("匹配结束"); + } + + }; + } + } + static private void FindDependencies() + { + Debug.Log("查找开始"); + string path = AssetDatabase.GetAssetPath(Selection.activeObject); + string[] files = AssetDatabase.GetDependencies(path); + for (int i = 0; i < files.Length; i++) + { + if (files[i].Equals(path)) + { + continue; //排除自身 + } + Debug.Log(files[i], AssetDatabase.LoadAssetAtPath(GetRelativeAssetsPath(files[i]))); + } + Debug.Log("查找结束"); + } + static private string GetRelativeAssetsPath(string path) + { + return "Assets" + Path.GetFullPath(path).Replace(Path.GetFullPath(Application.dataPath), "").Replace('\\', '/'); + } + } +} diff --git a/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs.meta b/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs.meta new file mode 100644 index 0000000000..a3b8bbae12 --- /dev/null +++ b/Assets/Scripts/Editor/GameEditor/FrameTool/DeleteResWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c33f102db514074db7806e4b4e44e88 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: