diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
index 962d2ae8..ba9c29ee 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
@@ -58,7 +58,7 @@ namespace YooAsset.Editor
///
/// 使用资源依赖缓存数据库
- /// 说明:开启此项可以极大提高资源收集速度
+ /// 说明:开启此项可以极大提高资源收集速度!
///
public bool UseAssetDependencyDB = false;
@@ -67,6 +67,12 @@ namespace YooAsset.Editor
///
public bool EnableSharePackRule = false;
+ ///
+ /// 对单独引用的共享资源进行独立打包
+ /// 说明:关闭该选项单独引用的共享资源将会构建到引用它的资源包内!
+ ///
+ public bool SingleReferencedPackAlone = false;
+
///
/// 验证构建结果
///
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
index fb7f638e..82deecac 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
@@ -109,15 +109,10 @@ namespace YooAsset.Editor
{
if (buildAssetInfo.HasBundleName() == false)
{
- PackRuleResult packRuleResult = GetShareBundleName(buildAssetInfo);
- if (packRuleResult.IsValid())
- {
- string shareBundleName = packRuleResult.GetShareBundleName(collectResult.Command.PackageName, collectResult.Command.UniqueBundleName);
- buildAssetInfo.SetBundleName(shareBundleName);
- }
+ ProcessingPackShareBundle(buildParameters, collectResult.Command, buildAssetInfo);
}
}
- PostProcessPackShareBundle();
+ PostProcessPackShareBundle(buildParameters, collectResult.Command, allBuildAssetInfos);
}
// 8. 记录关键信息
@@ -209,21 +204,38 @@ namespace YooAsset.Editor
}
///
- /// 共享资源打包后置处理
+ /// 共享资源打包机制
///
- protected virtual void PostProcessPackShareBundle()
+ protected virtual void ProcessingPackShareBundle(BuildParameters buildParameters, CollectCommand command, BuildAssetInfo buildAssetInfo)
{
- }
+ PackRuleResult packRuleResult = GetShareBundleName(buildAssetInfo);
+ if (packRuleResult.IsValid() == false)
+ return;
- ///
- /// 获取共享资源包名称
- ///
- protected virtual PackRuleResult GetShareBundleName(BuildAssetInfo buildAssetInfo)
+ // 处理单个引用的共享资源
+ if (buildAssetInfo.GetReferenceBundleCount() <= 1)
+ {
+ if (buildParameters.SingleReferencedPackAlone == false)
+ return;
+ }
+
+ // 设置共享资源包名
+ string shareBundleName = packRuleResult.GetShareBundleName(command.PackageName, command.UniqueBundleName);
+ buildAssetInfo.SetBundleName(shareBundleName);
+ }
+ private PackRuleResult GetShareBundleName(BuildAssetInfo buildAssetInfo)
{
string bundleName = Path.GetDirectoryName(buildAssetInfo.AssetInfo.AssetPath);
PackRuleResult result = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension);
return result;
}
+
+ ///
+ /// 共享资源打包后置处理
+ ///
+ protected virtual void PostProcessPackShareBundle(BuildParameters buildParameters, CollectCommand command, Dictionary allBuildAssetInfos)
+ {
+ }
#endregion
}
}
\ No newline at end of file