From f72814a51bef8eeae2453fc379ad87e4822443d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Sat, 8 Feb 2025 11:45:06 +0800 Subject: [PATCH] fix #462 --- .../AssetBundleBuilder/BuildParameters.cs | 8 +++- .../BaseTasks/TaskGetBuildMap.cs | 40 ++++++++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) 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