diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index acb142c..1bc3543 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -12,7 +12,7 @@ namespace AssetStudio { public string SpecifyUnityVersion; public List assetsFileList = new List(); - private List filteredAssetTypesList = new List(); + private HashSet filteredAssetTypesList = new HashSet(); internal Dictionary assetsFileIndexCache = new Dictionary(StringComparer.OrdinalIgnoreCase); internal Dictionary resourceFileReaders = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -22,35 +22,32 @@ namespace AssetStudio private HashSet noexistFiles = new HashSet(StringComparer.OrdinalIgnoreCase); private HashSet assetsFileListHash = new HashSet(StringComparer.OrdinalIgnoreCase); - public void SetAssetFilter(ClassIDType classIDType) + public void SetAssetFilter(params ClassIDType[] classIDTypes) { if (filteredAssetTypesList.Count == 0) { - filteredAssetTypesList.AddRange(new List + filteredAssetTypesList.UnionWith(new HashSet { ClassIDType.AssetBundle, ClassIDType.ResourceManager, }); } - if (classIDType == ClassIDType.MonoBehaviour) + if (classIDTypes.Contains(ClassIDType.MonoBehaviour)) { - filteredAssetTypesList.AddRange(new List - { - ClassIDType.MonoScript, - ClassIDType.MonoBehaviour - }); + filteredAssetTypesList.Add(ClassIDType.MonoScript); } - else + if (classIDTypes.Contains(ClassIDType.Sprite)) { - filteredAssetTypesList.Add(classIDType); + filteredAssetTypesList.Add(ClassIDType.Texture2D); } + + filteredAssetTypesList.UnionWith(classIDTypes); } public void SetAssetFilter(List classIDTypeList) { - foreach (ClassIDType classIDType in classIDTypeList) - SetAssetFilter(classIDType); + SetAssetFilter(classIDTypeList.ToArray()); } public void LoadFilesAndFolders(params string[] path)