public List<CFileRefrence> CalculateSpriteReference(string fileFolder, string spriteFile) { List<CFileRefrence> ret = new List<CFileRefrence>(); string spriteGuid = ToGuid(fileFolder); if (spriteGuid.Length <= 0) return ret; string spriteName = ""; { int firstIndex = spriteFile.IndexOf('.'); if (firstIndex < 0) return ret; spriteName = spriteFile.Substring(0, firstIndex); } { foreach (string one in m_scenePath) { string[] fileNames = Directory.GetFiles(one, "*.unity", SearchOption.AllDirectories); foreach (string fileName in fileNames) { int reference_count = getReferenceCount(fileName, spriteGuid, spriteName); if (reference_count <= 0) continue; CFileRefrence fileRef = new CFileRefrence(); fileRef.mFileName = fileName; fileRef.mRefCount = reference_count; ret.Add(fileRef); } } } { foreach (string one in m_prefabPath) { string[] fileNames = Directory.GetFiles(one, "*.prefab", SearchOption.AllDirectories); foreach (string fileName in fileNames) { int reference_count = getReferenceCount(fileName, spriteGuid, spriteName); if (reference_count <= 0) continue; CFileRefrence fileRef = new CFileRefrence(); fileRef.mFileName = fileName; fileRef.mRefCount = reference_count; ret.Add(fileRef); } } } return ret; }
public Dictionary<string, LinkedList<CFileRefrence>> CalculateSpriteReferenceBatch(string fileFolder, LinkedList<string> spriteFiles) { Dictionary<string, LinkedList<CFileRefrence> > fileReferences = new Dictionary<string, LinkedList<CFileRefrence> >(); if (spriteFiles.Count <= 0) return fileReferences; string spriteGuid = ToGuid(fileFolder); if (spriteGuid.Length <= 0) return fileReferences; LinkedList<string> spriteNames = new LinkedList<string>(); { foreach (string one in spriteFiles) { int firstIndex = one.IndexOf('.'); if (firstIndex <= 0) continue; spriteNames.AddLast(one.Substring(0, firstIndex)); } } if (spriteNames.Count <= 0) return fileReferences; { foreach (string sceneName in m_scenePath) { string[] fileNames = Directory.GetFiles(sceneName, "*.unity", SearchOption.AllDirectories); foreach (string fileName in fileNames) { Dictionary<string, int> referenceCounts = getReferenceCounts(fileName, spriteGuid); foreach (string spriteName in spriteNames) { int outValue = 0; if (!referenceCounts.TryGetValue(spriteName, out outValue)) continue; CFileRefrence oneReference = new CFileRefrence(); oneReference.mFileName = fileName; oneReference.mRefCount = outValue; LinkedList<CFileRefrence> fileReference;// = new LinkedList<CFileRefrence>(); if (fileReferences.TryGetValue(spriteName, out fileReference)) { fileReference.AddLast(oneReference); } else { fileReference = new LinkedList<CFileRefrence>(); fileReference.AddLast(oneReference); fileReferences.Add(spriteName, fileReference); } } } } } { foreach (string one in m_prefabPath) { string[] fileNames = Directory.GetFiles(one, "*.prefab", SearchOption.AllDirectories); foreach (string fileName in fileNames) { Dictionary<string, int> referenceCounts = getReferenceCounts(fileName, spriteGuid); foreach (string spriteName in spriteNames) { int outValue = 0; if (!referenceCounts.TryGetValue(spriteName, out outValue)) continue; CFileRefrence oneReference = new CFileRefrence(); oneReference.mFileName = fileName; oneReference.mRefCount = outValue; LinkedList<CFileRefrence> fileReference;// = new LinkedList<CFileRefrence>(); if (fileReferences.TryGetValue(spriteName, out fileReference)) { fileReference.AddLast(oneReference); } else { fileReference = new LinkedList<CFileRefrence>(); fileReference.AddLast(oneReference); fileReferences.Add(spriteName, fileReference); } } } } } return fileReferences; }