diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
index 18659647..2653ee04 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
@@ -25,6 +25,9 @@ namespace YooAsset.Editor
var buildParameters = buildParametersContext.Parameters;
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
+ // 检测资源包哈希冲突
+ CheckBundleHashConflict(buildMapContext);
+
// 创建新补丁清单
PackageManifest manifest = new PackageManifest();
manifest.FileVersion = YooAssetSettings.ManifestFileVersion;
@@ -88,6 +91,27 @@ namespace YooAsset.Editor
}
}
+ ///
+ /// 检测资源包哈希冲突
+ ///
+ private void CheckBundleHashConflict(BuildMapContext buildMapContext)
+ {
+ // 说明:在特殊情况下,例如某些文件加密算法会导致加密后的文件哈希值冲突!
+ HashSet guids = new HashSet();
+ foreach (var bundleInfo in buildMapContext.Collection)
+ {
+ if (guids.Contains(bundleInfo.PackageFileHash))
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.BundleHashConflict, $"Bundle hash conflict : {bundleInfo.BundleName}");
+ throw new Exception(message);
+ }
+ else
+ {
+ guids.Add(bundleInfo.PackageFileHash);
+ }
+ }
+ }
+
///
/// 获取资源包的依赖集合
///
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
index 2fb0bdb2..ec5c3e93 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
@@ -39,5 +39,6 @@ namespace YooAsset.Editor
// TaskCreateManifest
NotFoundUnityBundleInBuildResult = 600,
FoundStrayBundle = 601,
+ BundleHashConflict = 602,
}
}
\ No newline at end of file