From 0934c813d11908ca265612cd40cc51f82c6e5cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Sat, 13 Sep 2025 18:18:31 +0800 Subject: [PATCH] fix #644 --- .../AssetBundleCollector.cs | 18 ++++++- .../AssetBundleCollectorWindow.cs | 2 +- .../AssetBundleCollector/CollectCommand.cs | 54 ++++++++++++++++++- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs index 56e31cdb..8ca9dbad 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs @@ -139,6 +139,20 @@ namespace YooAsset.Editor /// public List GetAllCollectAssets(CollectCommand command, AssetBundleCollectorGroup group) { + bool ignoreStaticCollector = command.IsFlagSet(ECollectFlags.IgnoreStaticCollector); + if (ignoreStaticCollector) + { + if (CollectorType == ECollectorType.StaticAssetCollector) + return new List(); + } + + bool ignoreDependCollector = command.IsFlagSet(ECollectFlags.IgnoreDependCollector); + if (ignoreDependCollector) + { + if (CollectorType == ECollectorType.DependAssetCollector) + return new List(); + } + Dictionary result = new Dictionary(1000); // 收集打包资源路径 @@ -262,8 +276,8 @@ namespace YooAsset.Editor } private List GetAllDependencies(CollectCommand command, string mainAssetPath) { - // 注意:模拟构建模式下不需要收集依赖资源 - if (command.SimulateBuild) + bool ignoreGetDependencies = command.IsFlagSet(ECollectFlags.IgnoreGetDependencies); + if (ignoreGetDependencies) return new List(); string[] depends = command.AssetDependency.GetDependencies(mainAssetPath, true); diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs index 29b8cd86..3bb19f3c 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs @@ -1028,7 +1028,7 @@ namespace YooAsset.Editor IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(_ignoreRulePopupField.value.ClassName); string packageName = _packageNameTxt.value; var command = new CollectCommand(packageName, ignoreRule); - command.SimulateBuild = true; + command.SetFlag(ECollectFlags.IgnoreGetDependencies, true); command.UniqueBundleName = _uniqueBundleNameToogle.value; command.EnableAddressable = _enableAddressableToogle.value; command.SupportExtensionless = _supportExtensionlessToogle.value; diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs b/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs index 9780120c..c04bfe98 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs @@ -1,6 +1,26 @@  namespace YooAsset.Editor { + public enum ECollectFlags + { + None = 0, + + /// + /// 不收集依赖资源 + /// + IgnoreGetDependencies = 1 << 0, + + /// + /// 忽略静态收集器 + /// + IgnoreStaticCollector = 1 << 1, + + /// + /// 忽略依赖收集器 + /// + IgnoreDependCollector = 1 << 2, + } + public class CollectCommand { /// @@ -17,7 +37,20 @@ namespace YooAsset.Editor /// /// 模拟构建模式 /// - public bool SimulateBuild { set; get; } + public bool SimulateBuild + { + set + { + SetFlag(ECollectFlags.IgnoreGetDependencies, value); + SetFlag(ECollectFlags.IgnoreStaticCollector, value); + SetFlag(ECollectFlags.IgnoreDependCollector, value); + } + } + + /// + /// 窗口收集模式 + /// + public int CollectFlags { set; get; } = 0; /// /// 资源包名唯一化 @@ -70,5 +103,24 @@ namespace YooAsset.Editor PackageName = packageName; IgnoreRule = ignoreRule; } + + /// + /// 设置标记位 + /// + public void SetFlag(ECollectFlags flag, bool isOn) + { + if (isOn) + CollectFlags |= (int)flag; // 开启指定标志位 + else + CollectFlags &= ~(int)flag; // 关闭指定标志位 + } + + /// + /// 查询标记位 + /// + public bool IsFlagSet(ECollectFlags flag) + { + return (CollectFlags & (int)flag) != 0; + } } } \ No newline at end of file