diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs index 8ca9dbad..944ff91b 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs @@ -159,8 +159,10 @@ namespace YooAsset.Editor List findAssets = new List(); if (AssetDatabase.IsValidFolder(CollectPath)) { - string collectDirectory = CollectPath; - string[] findResult = EditorTools.FindAssets(EAssetSearchType.All, collectDirectory); + IFilterRule filterRuleInstance = AssetBundleCollectorSettingData.GetFilterRuleInstance(FilterRuleName); + string findAssetType = filterRuleInstance.FindAssetType; + string searchFolder = CollectPath; + string[] findResult = EditorTools.FindAssets(findAssetType, searchFolder); findAssets.AddRange(findResult); } else diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/CollectRules/IFilterRule.cs b/Assets/YooAsset/Editor/AssetBundleCollector/CollectRules/IFilterRule.cs index 090c0618..03ee2661 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/CollectRules/IFilterRule.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/CollectRules/IFilterRule.cs @@ -23,7 +23,13 @@ namespace YooAsset.Editor public interface IFilterRule { /// - /// 是否为收集资源 + /// 搜寻的资源类型 + /// 说明:使用引擎方法搜索获取所有资源列表 + /// + string FindAssetType { get; } + + /// + /// 验证搜寻的资源是否为收集资源 /// /// 如果收集该资源返回TRUE bool IsCollectAsset(FilterRuleData data); diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs b/Assets/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs index e1eb3b67..a2d6b203 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs @@ -9,6 +9,11 @@ namespace YooAsset.Editor [DisplayName("收集所有资源")] public class CollectAll : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.All.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { return true; @@ -18,6 +23,11 @@ namespace YooAsset.Editor [DisplayName("收集场景")] public class CollectScene : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.Scene.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { string extension = Path.GetExtension(data.AssetPath); @@ -28,6 +38,11 @@ namespace YooAsset.Editor [DisplayName("收集预制体")] public class CollectPrefab : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.Prefab.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { return Path.GetExtension(data.AssetPath) == ".prefab"; @@ -37,6 +52,11 @@ namespace YooAsset.Editor [DisplayName("收集精灵类型的纹理")] public class CollectSprite : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.Sprite.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { var mainAssetType = AssetDatabase.GetMainAssetTypeAtPath(data.AssetPath); @@ -58,6 +78,11 @@ namespace YooAsset.Editor [DisplayName("收集着色器")] public class CollectShader : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.Shader.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { return Path.GetExtension(data.AssetPath) == ".shader"; @@ -67,6 +92,11 @@ namespace YooAsset.Editor [DisplayName("收集着色器变种集合")] public class CollectShaderVariants : IFilterRule { + public string FindAssetType + { + get { return EAssetSearchType.All.ToString(); } + } + public bool IsCollectAsset(FilterRuleData data) { return Path.GetExtension(data.AssetPath) == ".shadervariants"; diff --git a/Assets/YooAsset/Editor/EditorDefine.cs b/Assets/YooAsset/Editor/EditorDefine.cs index d3a98010..898d20ae 100644 --- a/Assets/YooAsset/Editor/EditorDefine.cs +++ b/Assets/YooAsset/Editor/EditorDefine.cs @@ -39,6 +39,7 @@ namespace YooAsset.Editor Shader, Sprite, Texture, + RenderTexture, VideoClip, } diff --git a/Assets/YooAsset/Editor/EditorTools.cs b/Assets/YooAsset/Editor/EditorTools.cs index c3a6824e..07c50510 100644 --- a/Assets/YooAsset/Editor/EditorTools.cs +++ b/Assets/YooAsset/Editor/EditorTools.cs @@ -169,6 +169,28 @@ namespace YooAsset.Editor /// 指定搜索的文件夹列表 /// 返回搜集到的资源路径列表 public static string[] FindAssets(EAssetSearchType searchType, string[] searchInFolders) + { + return FindAssets(searchType.ToString(), searchInFolders); + } + + /// + /// 搜集资源 + /// + /// 搜集的资源类型 + /// 指定搜索的文件夹 + /// 返回搜集到的资源路径列表 + public static string[] FindAssets(EAssetSearchType searchType, string searchInFolder) + { + return FindAssets(searchType.ToString(), new string[] { searchInFolder }); + } + + /// + /// 搜集资源 + /// + /// 搜集的资源类型 + /// 指定搜索的文件夹列表 + /// 返回搜集到的资源路径列表 + public static string[] FindAssets(string searchType, string[] searchInFolders) { // 注意:AssetDatabase.FindAssets()不支持末尾带分隔符的文件夹路径 for (int i = 0; i < searchInFolders.Length; i++) @@ -179,7 +201,7 @@ namespace YooAsset.Editor // 注意:获取指定目录下的所有资源对象(包括子文件夹) string[] guids; - if (searchType == EAssetSearchType.All) + if (string.IsNullOrEmpty(searchType) || searchType == EAssetSearchType.All.ToString()) guids = AssetDatabase.FindAssets(string.Empty, searchInFolders); else guids = AssetDatabase.FindAssets($"t:{searchType}", searchInFolders); @@ -206,7 +228,7 @@ namespace YooAsset.Editor /// 搜集的资源类型 /// 指定搜索的文件夹 /// 返回搜集到的资源路径列表 - public static string[] FindAssets(EAssetSearchType searchType, string searchInFolder) + public static string[] FindAssets(string searchType, string searchInFolder) { return FindAssets(searchType, new string[] { searchInFolder }); }