删除资源工具提交
parent
93a9473184
commit
b98fd71d35
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fd52b845f4615b2418f482acbcb2d5c6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9aff0d9872fc9e1469693125c1f2c862
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: efc97f44d1121b04a82c298cc2f2bd3a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b0f7e0d4b2c88bb48b0eca4a78194329
|
||||
folderAsset: yes
|
||||
timeCreated: 1552113377
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 85993f79eed59024d9e637fd94c9f881
|
||||
folderAsset: yes
|
||||
timeCreated: 1553745853
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ecfc6395934e4694b87e6b3ac204aef6
|
||||
folderAsset: yes
|
||||
timeCreated: 1553745942
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: efacd716265078149b4e1bb1298a2b6f
|
||||
folderAsset: yes
|
||||
timeCreated: 1553746060
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: dfd5fb09b0968174ca1b9d2dc08a34ba
|
||||
folderAsset: yes
|
||||
timeCreated: 1552113391
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: dd8f0b09384a0ae44ac0c9192876c812
|
||||
folderAsset: yes
|
||||
timeCreated: 1560330541
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 691f605092cae4348b2df83b2299845a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,10 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f943e679a5ef49a4990da9059990b18e
|
||||
folderAsset: yes
|
||||
timeCreated: 1555905791
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9f6680e5797aa3a4da004c60b970a6d3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 84e5263cf14c3fd42b34d74cee22462e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -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<string, List<string>> dic;
|
||||
static Dictionary<string, List<string>> dependDic;
|
||||
static Dictionary<string, List<string>> refrenceDic;
|
||||
static Dictionary<string, List<string>> dependUnUsedDic;
|
||||
List<string> upLoadPathList;
|
||||
static string resName = "";
|
||||
[MenuItem("资源导入/资源删除")]
|
||||
static void InitWindow()
|
||||
{
|
||||
dic = new Dictionary<string, List<string>>();
|
||||
dependDic = new Dictionary<string, List<string>>();
|
||||
refrenceDic = new Dictionary<string, List<string>>();
|
||||
dependUnUsedDic = new Dictionary<string, List<string>>();
|
||||
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<string>();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Debug.Log(index + "行出错了");
|
||||
}
|
||||
}
|
||||
sr.Close();
|
||||
fs.Close();
|
||||
}
|
||||
static void FindRes()
|
||||
{
|
||||
int index = 0;
|
||||
foreach (KeyValuePair<string, List<string>> 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<string>();
|
||||
}
|
||||
dependUnUsedDic[keyValue.Key].AddRange(dependDic[resPath]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void FindUnUsedDepend()
|
||||
{
|
||||
int num = 0;
|
||||
foreach (KeyValuePair<string, List<string>> 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<string, List<string>> 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<string>();
|
||||
}
|
||||
refrenceDic[keyValue.Value[i]].Add(keyValue.Key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SetDependsTable(string resPath)
|
||||
{
|
||||
if (!dependDic.ContainsKey(resPath))
|
||||
{
|
||||
dependDic[resPath] = new List<string>();
|
||||
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<string, List<string>> 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<string>() { ".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<Object>(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<Object>(GetRelativeAssetsPath(files[i])));
|
||||
}
|
||||
Debug.Log("查找结束");
|
||||
}
|
||||
static private string GetRelativeAssetsPath(string path)
|
||||
{
|
||||
return "Assets" + Path.GetFullPath(path).Replace(Path.GetFullPath(Application.dataPath), "").Replace('\\', '/');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7c33f102db514074db7806e4b4e44e88
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue