diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs
index 4aee18d5..48fb8f04 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs
@@ -89,5 +89,17 @@ namespace YooAsset.Editor
string key = $"{Application.productName}_{packageName}_{buildPipeline}_ClearBuildCache";
EditorPrefs.SetInt(key, clearBuildCache ? 1 : 0);
}
+
+ // UseAssetDependencyDB
+ public static bool GetPackageUseAssetDependencyDB(string packageName, EBuildPipeline buildPipeline)
+ {
+ string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB";
+ return EditorPrefs.GetInt(key, 0) > 0;
+ }
+ public static void SetPackageUseAssetDependencyDB(string packageName, EBuildPipeline buildPipeline, bool useAssetDependencyDB)
+ {
+ string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB";
+ EditorPrefs.SetInt(key, useAssetDependencyDB ? 1 : 0);
+ }
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
index c5707ae7..5674d327 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
@@ -50,7 +50,13 @@ namespace YooAsset.Editor
/// 清空构建缓存文件
///
public bool ClearBuildCacheFiles = false;
-
+
+ ///
+ /// 使用资源依赖缓存数据库
+ /// 说明:开启此项可以极大提高资源收集速度
+ ///
+ public bool UseAssetDependencyDB = false;
+
///
/// 启用共享资源打包
///
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
index 3a8cafd7..974f8d8f 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
@@ -137,6 +137,9 @@ namespace YooAsset.Editor
result.Add(packageAsset);
}
}
+
+ // 按照AssetPath排序
+ result.Sort((a, b) => a.AssetPath.CompareTo(b.AssetPath));
return result;
}
@@ -151,6 +154,9 @@ namespace YooAsset.Editor
var packageBundle = bundleInfo.CreatePackageBundle();
result.Add(packageBundle);
}
+
+ // 按照BundleName排序
+ result.Sort((a, b) => a.BundleName.CompareTo(b.BundleName));
// 注意:缓存资源包索引
for (int index = 0; index < result.Count; index++)
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs
index b9cfb833..6a480ec0 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs
@@ -42,6 +42,7 @@ namespace YooAsset.Editor
// 构建参数
buildReport.Summary.ClearBuildCacheFiles = buildParameters.ClearBuildCacheFiles;
+ buildReport.Summary.UseAssetDependencyDB = buildParameters.UseAssetDependencyDB;
buildReport.Summary.EnableSharePackRule = buildParameters.EnableSharePackRule;
buildReport.Summary.EncryptionClassName = buildParameters.EncryptionServices == null ? "null" : buildParameters.EncryptionServices.GetType().FullName;
if (buildParameters.BuildPipeline == nameof(BuiltinBuildPipeline))
@@ -131,6 +132,7 @@ namespace YooAsset.Editor
string dependBundleName = manifest.BundleList[index].BundleName;
dependBundles.Add(dependBundleName);
}
+ dependBundles.Sort();
return dependBundles;
}
@@ -160,6 +162,7 @@ namespace YooAsset.Editor
result.Add(dependAssetInfo.AssetInfo.AssetPath);
}
}
+ result.Sort();
return result;
}
@@ -169,7 +172,9 @@ namespace YooAsset.Editor
private List GetAllBuiltinAssets(BuildMapContext buildMapContext, string bundleName)
{
var bundleInfo = buildMapContext.GetBundleInfo(bundleName);
- return bundleInfo.GetAllBuiltinAssetPaths();
+ List result = bundleInfo.GetAllBuiltinAssetPaths();
+ result.Sort();
+ return result;
}
private int GetMainAssetCount(PackageManifest manifest)
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
index 06ebfda2..1371506c 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
@@ -20,7 +20,8 @@ namespace YooAsset.Editor
Dictionary allBuildAssetInfos = new Dictionary(1000);
// 1. 获取所有收集器收集的资源
- var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(simulateBuild, packageName);
+ bool useAssetDependencyDB = buildParameters.UseAssetDependencyDB;
+ var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(simulateBuild, useAssetDependencyDB, packageName);
List allCollectAssets = collectResult.CollectAssets;
// 2. 剔除未被引用的依赖项资源
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs
index 183d149f..cf5a86bf 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs
@@ -28,6 +28,7 @@ namespace YooAsset.Editor
private EnumField _copyBuildinFileOptionField;
private TextField _copyBuildinFileTagsField;
private Toggle _clearBuildCacheToggle;
+ private Toggle _useAssetDependencyDBToggle;
public BuildPipelineViewerBase(string packageName, EBuildPipeline buildPipeline, BuildTarget buildTarget, VisualElement parent)
{
@@ -140,6 +141,15 @@ namespace YooAsset.Editor
AssetBundleBuilderSetting.SetPackageClearBuildCache(PackageName, BuildPipeline, _clearBuildCacheToggle.value);
});
+ // 使用资源依赖数据库
+ bool useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline);
+ _useAssetDependencyDBToggle = Root.Q("UseAssetDependency");
+ _useAssetDependencyDBToggle.SetValueWithoutNotify(useAssetDependencyDB);
+ _useAssetDependencyDBToggle.RegisterValueChangedCallback(evt =>
+ {
+ AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(PackageName, BuildPipeline, _useAssetDependencyDBToggle.value);
+ });
+
// 构建按钮
var buildButton = Root.Q