/// <summary> /// 添加资源到AB包中 /// </summary> public void AddAsset(string filePath) { AssetFileInfo file = AssetBundleEditorUtility.GetFileInfoByPath(filePath); if (file.Bundled != Name) { file.Bundled = Name; MemorySize += file.MemorySize; file.ReadDependenciesFile(); file.UpdateRedundantState(); _filePaths.Add(filePath); for (int i = 0; i < file.Dependencies.Count; i++) { AssetFileInfo depenFile = AssetBundleEditorUtility.GetFileInfoByPath(file.Dependencies[i]); if (depenFile.IsValid) { if (!depenFile.IndirectBundled.ContainsKey(Name)) { depenFile.IndirectBundled.Add(Name, 0); MemorySize += depenFile.MemorySize; } depenFile.IndirectBundled[Name] = depenFile.IndirectBundled[Name] + 1; if (!depenFile.IndirectBundledRelation.ContainsKey(filePath)) { depenFile.IndirectBundledRelation.Add(filePath, Name); } depenFile.UpdateRedundantState(); } } MemorySizeFormat = EditorUtility.FormatBytes(MemorySize); } AssetImporter import = AssetImporter.GetAtPath(filePath); import.assetBundleName = Name; }
/// <summary> /// 从AB包中移除资源 /// </summary> public void RemoveAsset(string filePath) { AssetFileInfo file = AssetBundleEditorUtility.GetFileInfoByPath(filePath); if (file.Bundled == Name) { file.Bundled = ""; MemorySize -= file.MemorySize; file.ReadDependenciesFile(); file.UpdateRedundantState(); _filePaths.Remove(filePath); for (int i = 0; i < file.Dependencies.Count; i++) { AssetFileInfo depenFile = AssetBundleEditorUtility.GetFileInfoByPath(file.Dependencies[i]); if (depenFile.IndirectBundled.ContainsKey(Name)) { depenFile.IndirectBundled[Name] = depenFile.IndirectBundled[Name] - 1; if (depenFile.IndirectBundled[Name] <= 0) { depenFile.IndirectBundled.Remove(Name); MemorySize -= depenFile.MemorySize; } } if (depenFile.IndirectBundledRelation.ContainsKey(filePath)) { depenFile.IndirectBundledRelation.Remove(filePath); } depenFile.UpdateRedundantState(); } MemorySizeFormat = EditorUtility.FormatBytes(MemorySize); } AssetImporter import = AssetImporter.GetAtPath(filePath); import.assetBundleName = ""; }