diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs
index d6ea3eac..c97246c5 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs
@@ -69,6 +69,7 @@ namespace YooAsset.Editor
{
_pipelineMenu = new ToolbarMenu();
_pipelineMenu.style.width = 200;
+ _pipelineMenu.menu.AppendAction(EBuildPipeline.EditorSimulateBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.EditorSimulateBuildPipeline);
_pipelineMenu.menu.AppendAction(EBuildPipeline.BuiltinBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.BuiltinBuildPipeline);
_pipelineMenu.menu.AppendAction(EBuildPipeline.ScriptableBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.ScriptableBuildPipeline);
_pipelineMenu.menu.AppendAction(EBuildPipeline.RawFileBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.RawFileBuildPipeline);
@@ -93,7 +94,11 @@ namespace YooAsset.Editor
_pipelineMenu.text = _buildPipeline.ToString();
var buildTarget = EditorUserBuildSettings.activeBuildTarget;
- if (_buildPipeline == EBuildPipeline.BuiltinBuildPipeline)
+ if (_buildPipeline == EBuildPipeline.EditorSimulateBuildPipeline)
+ {
+ var viewer = new EditorSimulateBuildPipelineViewer(_buildPackage, buildTarget, _container);
+ }
+ else if (_buildPipeline == EBuildPipeline.BuiltinBuildPipeline)
{
var viewer = new BuiltinBuildPipelineViewer(_buildPackage, buildTarget, _container);
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
index 698402ee..9b5e86f5 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
@@ -10,66 +10,20 @@ namespace YooAsset.Editor
///
public static SimulateBuildResult SimulateBuild(string buildPipelineName, string packageName)
{
- string packageVersion = "Simulate";
- BuildResult buildResult;
+ var buildParameters = new EditorSimulateBuildParameters();
+ buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+ buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+ buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString();
+ buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
+ buildParameters.BuildMode = EBuildMode.ForceRebuild;
+ buildParameters.PackageName = packageName;
+ buildParameters.PackageVersion = "Simulate";
+ buildParameters.FileNameStyle = EFileNameStyle.HashName;
+ buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
+ buildParameters.BuildinFileCopyParams = string.Empty;
- if (buildPipelineName == EBuildPipeline.BuiltinBuildPipeline.ToString())
- {
- BuiltinBuildParameters buildParameters = new BuiltinBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = packageVersion;
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
-
- BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline();
- buildResult = pipeline.Run(buildParameters, false);
- }
- else if (buildPipelineName == EBuildPipeline.ScriptableBuildPipeline.ToString())
- {
- ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = packageVersion;
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
-
- ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
- buildResult = pipeline.Run(buildParameters, true);
- }
- else if (buildPipelineName == EBuildPipeline.RawFileBuildPipeline.ToString())
- {
- RawFileBuildParameters buildParameters = new RawFileBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = packageVersion;
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
-
- RawFileBuildPipeline pipeline = new RawFileBuildPipeline();
- buildResult = pipeline.Run(buildParameters, true);
- }
- else
- {
- throw new System.NotImplementedException(buildPipelineName);
- }
-
- // 返回结果
+ var pipeline = new EditorSimulateBuildPipeline();
+ BuildResult buildResult = pipeline.Run(buildParameters, false);
if (buildResult.Success)
{
SimulateBuildResult reulst = new SimulateBuildResult();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
index 06f166fe..dfd5bd22 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
@@ -99,16 +99,6 @@ namespace YooAsset.Editor
throw new Exception(message);
}
- // 检测是否有未保存场景
- if (BuildMode != EBuildMode.SimulateBuild)
- {
- if (EditorTools.HasDirtyScenes())
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !");
- throw new Exception(message);
- }
- }
-
// 检测构建参数合法性
if (BuildTarget == BuildTarget.NoTarget)
{
@@ -136,34 +126,6 @@ namespace YooAsset.Editor
throw new Exception(message);
}
- // 强制构建删除包裹目录
- if (BuildMode == EBuildMode.ForceRebuild)
- {
- string packageRootDirectory = GetPackageRootDirectory();
- if (EditorTools.DeleteDirectory(packageRootDirectory))
- {
- BuildLogger.Log($"Delete package root directory: {packageRootDirectory}");
- }
- }
-
- // 检测包裹输出目录是否存在
- if (BuildMode != EBuildMode.SimulateBuild)
- {
- string packageOutputDirectory = GetPackageOutputDirectory();
- if (Directory.Exists(packageOutputDirectory))
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}");
- throw new Exception(message);
- }
- }
-
- // 如果输出目录不存在
- string pipelineOutputDirectory = GetPipelineOutputDirectory();
- if (EditorTools.CreateDirectory(pipelineOutputDirectory))
- {
- BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
- }
-
// 设置默认备注信息
if (string.IsNullOrEmpty(PackageNote))
{
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
index 42afb929..5147938f 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
@@ -18,7 +18,7 @@ namespace YooAsset.Editor
///
/// 创建补丁清单文件到输出目录
///
- protected void CreateManifestFile(BuildContext context)
+ protected void CreateManifestFile(bool processBundleDepends, bool processBundleTags, BuildContext context)
{
var buildMapContext = context.GetContextObject();
var buildParametersContext = context.GetContextObject();
@@ -42,14 +42,13 @@ namespace YooAsset.Editor
manifest.BundleList = GetAllPackageBundle(buildMapContext);
manifest.AssetList = GetAllPackageAsset(buildMapContext);
- if (buildParameters.BuildMode != EBuildMode.SimulateBuild)
- {
- // 处理资源包的依赖列表
+ // 处理资源包的依赖列表
+ if (processBundleDepends)
ProcessBundleDepends(context, manifest);
- // 处理资源包的标签集合
+ // 处理资源包的标签集合
+ if (processBundleTags)
ProcessBundleTags(manifest);
- }
// 创建补丁清单文本文件
{
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
index 68be80dd..190d9a63 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
///
/// 生成资源构建上下文
///
- public BuildMapContext CreateBuildMap(BuildParameters buildParameters)
+ public BuildMapContext CreateBuildMap(bool simulateBuild, BuildParameters buildParameters)
{
BuildMapContext context = new BuildMapContext();
var buildMode = buildParameters.BuildMode;
@@ -21,7 +21,7 @@ namespace YooAsset.Editor
Dictionary allBuildAssetInfos = new Dictionary(1000);
// 1. 获取所有收集器收集的资源
- var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(buildMode, packageName);
+ var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(simulateBuild, packageName);
List allCollectAssets = collectResult.CollectAssets;
// 2. 剔除未被引用的依赖项资源
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs
index 7cf43ecc..2889381a 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs
@@ -65,32 +65,5 @@ namespace YooAsset.Editor
protected abstract string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext);
protected abstract string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext);
protected abstract long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext);
-
- protected string GetFilePathTempHash(string filePath)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(filePath);
- return HashUtility.BytesMD5(bytes);
-
- // 注意:在文件路径的哈希值冲突的情况下,可以使用下面的方法
- //return $"{HashUtility.BytesMD5(bytes)}-{Guid.NewGuid():N}";
- }
- protected long GetBundleTempSize(BuildBundleInfo bundleInfo)
- {
- long tempSize = 0;
-
- var assetPaths = bundleInfo.GetAllMainAssetPaths();
- foreach (var assetPath in assetPaths)
- {
- long size = FileUtility.GetFileSize(assetPath);
- tempSize += size;
- }
-
- if (tempSize == 0)
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.BundleTempSizeIsZero, $"Bundle temp size is zero, check bundle main asset list : {bundleInfo.BundleName}");
- throw new Exception(message);
- }
- return tempSize;
- }
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs
index f722b055..83709a9e 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs
@@ -20,11 +20,6 @@ namespace YooAsset.Editor
var buildMapContext = context.GetContextObject();
var builtinBuildParameters = buildParametersContext.Parameters as BuiltinBuildParameters;
- // 模拟构建模式下跳过引擎构建
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return;
-
// 开始构建
string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory();
BuildAssetBundleOptions buildOptions = builtinBuildParameters.GetBundleBuildOptions();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs
index 32c46ea8..ea5f468c 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs
@@ -11,7 +11,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
- CreateManifestFile(context);
+ CreateManifestFile(true, true, context);
}
protected override string[] GetBundleDepends(BuildContext context, string bundleName)
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs
index eeaa6eb4..0ef47257 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs
@@ -9,17 +9,13 @@ namespace YooAsset.Editor
{
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreatePackageCatalog(buildParameters, buildMapContext);
- }
+ CreatePackagePatch(buildParameters, buildMapContext);
}
///
/// 拷贝补丁文件到补丁包目录
///
- private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
+ private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
{
string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory();
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs
index aa363adf..0d33a3e1 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs
@@ -13,12 +13,7 @@ namespace YooAsset.Editor
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
var manifestContext = context.GetContextObject();
-
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreateReportFile(buildParameters, buildMapContext, manifestContext);
- }
+ CreateReportFile(buildParameters, buildMapContext, manifestContext);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs
index 68a6cc00..3e8eadf8 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
var buildParametersContext = context.GetContextObject();
- var buildMapContext = CreateBuildMap(buildParametersContext.Parameters);
+ var buildMapContext = CreateBuildMap(false, buildParametersContext.Parameters);
context.SetContextObject(buildMapContext);
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs
index bcceb303..4c7f6dfb 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs
@@ -17,13 +17,42 @@ namespace YooAsset.Editor
// 检测基础构建参数
buildParametersContext.CheckBuildParameters();
+ // 检测是否有未保存场景
+ if (EditorTools.HasDirtyScenes())
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !");
+ throw new Exception(message);
+ }
+
+ // 强制构建删除包裹目录
+ if (buildParameters.BuildMode == EBuildMode.ForceRebuild)
+ {
+ string packageRootDirectory = buildParameters.GetPackageRootDirectory();
+ if (EditorTools.DeleteDirectory(packageRootDirectory))
+ {
+ BuildLogger.Log($"Delete package root directory: {packageRootDirectory}");
+ }
+ }
+
+ // 检测包裹输出目录是否存在
+ string packageOutputDirectory = buildParameters.GetPackageOutputDirectory();
+ if (Directory.Exists(packageOutputDirectory))
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}");
+ throw new Exception(message);
+ }
+
+ // 如果输出目录不存在
+ string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory();
+ if (EditorTools.CreateDirectory(pipelineOutputDirectory))
+ {
+ BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
+ }
+
// 检测Unity版本
#if UNITY_2021_3_OR_NEWER
- if (buildParameters.BuildMode != EBuildMode.SimulateBuild)
- {
- string warning = BuildLogger.GetErrorMessage(ErrorCode.RecommendScriptBuildPipeline, $"Starting with UnityEngine2021, recommend use script build pipeline (SBP) !");
- BuildLogger.Warning(warning);
- }
+ string warning = BuildLogger.GetErrorMessage(ErrorCode.RecommendScriptBuildPipeline, $"Starting with UnityEngine2021, recommend use script build pipeline (SBP) !");
+ BuildLogger.Warning(warning);
#endif
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs
index 343b641a..96f26f6a 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs
@@ -15,77 +15,45 @@ namespace YooAsset.Editor
protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
{
- var buildParametersContext = context.GetContextObject();
- var parameters = buildParametersContext.Parameters;
- var buildMode = parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
+ var buildResult = context.GetContextObject();
+ var hash = buildResult.UnityManifest.GetAssetBundleHash(bundleInfo.BundleName);
+ if (hash.isValid)
{
- return "00000000000000000000000000000000"; //32位
+ return hash.ToString();
}
else
{
- var buildResult = context.GetContextObject();
- var hash = buildResult.UnityManifest.GetAssetBundleHash(bundleInfo.BundleName);
- if (hash.isValid)
- {
- return hash.ToString();
- }
- else
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}");
- throw new Exception(message);
- }
+ string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}");
+ throw new Exception(message);
}
}
protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
{
- var buildParametersContext = context.GetContextObject();
- var parameters = buildParametersContext.Parameters;
- var buildMode = parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
+ string filePath = bundleInfo.BuildOutputFilePath;
+ if (BuildPipeline.GetCRCForAssetBundle(filePath, out uint crc))
{
- return 0;
+ return crc;
}
else
{
- string filePath = bundleInfo.BuildOutputFilePath;
- if (BuildPipeline.GetCRCForAssetBundle(filePath, out uint crc))
- {
- return crc;
- }
- else
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}");
- throw new Exception(message);
- }
+ string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}");
+ throw new Exception(message);
}
}
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetFilePathTempHash(filePath);
- else
- return HashUtility.FileMD5(filePath);
+ return HashUtility.FileMD5(filePath);
}
protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if ( buildMode == EBuildMode.SimulateBuild)
- return "00000000"; //8位
- else
- return HashUtility.FileCRC32(filePath);
+ return HashUtility.FileCRC32(filePath);
}
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetBundleTempSize(bundleInfo);
- else
- return FileUtility.GetFileSize(filePath);
+ return FileUtility.GetFileSize(filePath);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs
index 0d6af024..099dea9b 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs
@@ -15,10 +15,6 @@ namespace YooAsset.Editor
var buildParametersContext = context.GetContextObject();
var buildParameters = buildParametersContext.Parameters as BuiltinBuildParameters;
- // 模拟构建模式下跳过验证
- if (buildParameters.BuildMode == EBuildMode.SimulateBuild)
- return;
-
// 验证构建结果
if (buildParameters.VerifyBuildingResult)
{
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta
new file mode 100644
index 00000000..0bd716d6
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 12f78ad22f0513c44b6037469dbd6363
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta
new file mode 100644
index 00000000..ad68e77e
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1138888cdba447345abb498b0c89affa
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs
new file mode 100644
index 00000000..2ce98213
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs
@@ -0,0 +1,18 @@
+
+using System;
+
+namespace YooAsset.Editor
+{
+ public class TaskCreateManifest_ESBP : TaskCreateManifest, IBuildTask
+ {
+ void IBuildTask.Run(BuildContext context)
+ {
+ CreateManifestFile(false, false, context);
+ }
+
+ protected override string[] GetBundleDepends(BuildContext context, string bundleName)
+ {
+ return Array.Empty();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta
new file mode 100644
index 00000000..b8278be4
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 120e126cc10604c4f811c3b6377f7452
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs
new file mode 100644
index 00000000..e6e22a07
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs
@@ -0,0 +1,15 @@
+
+using System;
+
+namespace YooAsset.Editor
+{
+ public class TaskGetBuildMap_ESBP : TaskGetBuildMap, IBuildTask
+ {
+ void IBuildTask.Run(BuildContext context)
+ {
+ var buildParametersContext = context.GetContextObject();
+ var buildMapContext = CreateBuildMap(true, buildParametersContext.Parameters);
+ context.SetContextObject(buildMapContext);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta
new file mode 100644
index 00000000..37d60c9c
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 789c337b5b82f1c438a588982dfca346
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs
new file mode 100644
index 00000000..0ada64f0
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs
@@ -0,0 +1,17 @@
+
+using System;
+
+namespace YooAsset.Editor
+{
+ public class TaskPrepare_ESBP : IBuildTask
+ {
+ void IBuildTask.Run(BuildContext context)
+ {
+ var buildParametersContext = context.GetContextObject();
+ var buildParameters = buildParametersContext.Parameters;
+
+ // 检测基础构建参数
+ buildParametersContext.CheckBuildParameters();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta
new file mode 100644
index 00000000..5b18d5a6
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: abbe56a7120e34349b10f20956ed51a7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs
new file mode 100644
index 00000000..88d98a76
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs
@@ -0,0 +1,63 @@
+
+using System.Text;
+using System;
+
+namespace YooAsset.Editor
+{
+ public class TaskUpdateBundleInfo_ESBP : TaskUpdateBundleInfo, IBuildTask
+ {
+ void IBuildTask.Run(BuildContext context)
+ {
+ UpdateBundleInfo(context);
+ }
+
+ protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
+ {
+ return "00000000000000000000000000000000"; //32位
+ }
+ protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
+ {
+ return 0;
+ }
+ protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
+ {
+ string filePath = bundleInfo.PackageSourceFilePath;
+ return GetFilePathTempHash(filePath);
+ }
+ protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
+ {
+ return "00000000"; //8位
+ }
+ protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
+ {
+ return GetBundleTempSize(bundleInfo);
+ }
+
+ private string GetFilePathTempHash(string filePath)
+ {
+ byte[] bytes = Encoding.UTF8.GetBytes(filePath);
+ return HashUtility.BytesMD5(bytes);
+
+ // 注意:在文件路径的哈希值冲突的情况下,可以使用下面的方法
+ //return $"{HashUtility.BytesMD5(bytes)}-{Guid.NewGuid():N}";
+ }
+ private long GetBundleTempSize(BuildBundleInfo bundleInfo)
+ {
+ long tempSize = 0;
+
+ var assetPaths = bundleInfo.GetAllMainAssetPaths();
+ foreach (var assetPath in assetPaths)
+ {
+ long size = FileUtility.GetFileSize(assetPath);
+ tempSize += size;
+ }
+
+ if (tempSize == 0)
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.BundleTempSizeIsZero, $"Bundle temp size is zero, check bundle main asset list : {bundleInfo.BundleName}");
+ throw new Exception(message);
+ }
+ return tempSize;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta
new file mode 100644
index 00000000..f39b76c8
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 990b41f647b80a34ab666a3b0c1ba3f6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs
new file mode 100644
index 00000000..57d2310c
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs
@@ -0,0 +1,7 @@
+
+namespace YooAsset.Editor
+{
+ public class EditorSimulateBuildParameters : BuildParameters
+ {
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta
new file mode 100644
index 00000000..0e0051bc
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 03ea37371e6dc644cb2e6eabf9e7e2ad
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs
new file mode 100644
index 00000000..ff0ac4a7
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs
@@ -0,0 +1,37 @@
+
+using System.Collections.Generic;
+using System;
+
+namespace YooAsset.Editor
+{
+ public class EditorSimulateBuildPipeline : IBuildPipeline
+ {
+ public BuildResult Run(BuildParameters buildParameters, bool enableLog)
+ {
+ if (buildParameters is EditorSimulateBuildParameters)
+ {
+ AssetBundleBuilder builder = new AssetBundleBuilder();
+ return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog);
+ }
+ else
+ {
+ throw new Exception($"Invalid build parameter type : {buildParameters.GetType().Name}");
+ }
+ }
+
+ ///
+ /// 获取默认的构建流程
+ ///
+ private List GetDefaultBuildPipeline()
+ {
+ List pipeline = new List
+ {
+ new TaskPrepare_ESBP(),
+ new TaskGetBuildMap_ESBP(),
+ new TaskUpdateBundleInfo_ESBP(),
+ new TaskCreateManifest_ESBP()
+ };
+ return pipeline;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta
new file mode 100644
index 00000000..8627a935
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9caf8e4846ad8b64eb04a4d5179942ff
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs
index 4b9148f3..037d19eb 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs
@@ -13,13 +13,9 @@ namespace YooAsset.Editor
var buildParametersContext = context.GetContextObject();
var buildParameters = buildParametersContext.Parameters;
var manifestContext = context.GetContextObject();
-
- if (buildParameters.BuildMode != EBuildMode.SimulateBuild)
+ if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{
- if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
- {
- CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest);
- }
+ CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest);
}
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs
index 816063a9..e34dbe90 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs
@@ -9,7 +9,7 @@ namespace YooAsset.Editor
{
void IBuildTask.Run(BuildContext context)
{
- CreateManifestFile(context);
+ CreateManifestFile(false, true, context);
}
protected override string[] GetBundleDepends(BuildContext context, string bundleName)
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs
index f8a2a3b6..65c9d5bc 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs
@@ -9,17 +9,13 @@ namespace YooAsset.Editor
{
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreatePackageCatalog(buildParameters, buildMapContext);
- }
+ CreatePackagePatch(buildParameters, buildMapContext);
}
///
/// 拷贝补丁文件到补丁包目录
///
- private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
+ private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
{
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
BuildLogger.Log($"Start making patch package: {packageOutputDirectory}");
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs
index 83458c9d..10785bdd 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs
@@ -13,12 +13,7 @@ namespace YooAsset.Editor
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
var manifestContext = context.GetContextObject();
-
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreateReportFile(buildParameters, buildMapContext, manifestContext);
- }
+ CreateReportFile(buildParameters, buildMapContext, manifestContext);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs
index 88f99beb..720b9336 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
var buildParametersContext = context.GetContextObject();
- var buildMapContext = CreateBuildMap(buildParametersContext.Parameters);
+ var buildMapContext = CreateBuildMap(true, buildParametersContext.Parameters);
context.SetContextObject(buildMapContext);
// 检测构建结果
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs
index 1ac31e86..f9e434c6 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs
@@ -16,19 +16,37 @@ namespace YooAsset.Editor
// 检测基础构建参数
buildParametersContext.CheckBuildParameters();
- // 检测不被支持的参数
- if (buildParameters.EnableSharePackRule)
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportSharePackRule, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support share pack rule !");
- throw new Exception(message);
- }
-
// 检测不被支持的构建模式
if (buildParameters.BuildMode == EBuildMode.IncrementalBuild)
{
string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support {nameof(EBuildMode.IncrementalBuild)} build mode !");
throw new Exception(message);
}
+
+ // 强制构建删除包裹目录
+ if (buildParameters.BuildMode == EBuildMode.ForceRebuild)
+ {
+ string packageRootDirectory = buildParameters.GetPackageRootDirectory();
+ if (EditorTools.DeleteDirectory(packageRootDirectory))
+ {
+ BuildLogger.Log($"Delete package root directory: {packageRootDirectory}");
+ }
+ }
+
+ // 检测包裹输出目录是否存在
+ string packageOutputDirectory = buildParameters.GetPackageOutputDirectory();
+ if (Directory.Exists(packageOutputDirectory))
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}");
+ throw new Exception(message);
+ }
+
+ // 如果输出目录不存在
+ string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory();
+ if (EditorTools.CreateDirectory(pipelineOutputDirectory))
+ {
+ BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
+ }
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs
index ffc8571e..d68c14c8 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs
@@ -15,18 +15,8 @@ namespace YooAsset.Editor
protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
{
- var buildParametersContext = context.GetContextObject();
- var parameters = buildParametersContext.Parameters;
- var buildMode = parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- {
- return "00000000000000000000000000000000"; //32位
- }
- else
- {
- string filePath = bundleInfo.PackageSourceFilePath;
- return HashUtility.FileMD5(filePath);
- }
+ string filePath = bundleInfo.PackageSourceFilePath;
+ return HashUtility.FileMD5(filePath);
}
protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
{
@@ -35,29 +25,17 @@ namespace YooAsset.Editor
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetFilePathTempHash(filePath);
- else
- return HashUtility.FileMD5(filePath);
+ return HashUtility.FileMD5(filePath);
}
protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return "00000000"; //8位
- else
- return HashUtility.FileCRC32(filePath);
+ return HashUtility.FileCRC32(filePath);
}
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetBundleTempSize(bundleInfo);
- else
- return FileUtility.GetFileSize(filePath);
+ return FileUtility.GetFileSize(filePath);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs
index 2f084a9c..e7e32ab6 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs
@@ -21,11 +21,6 @@ namespace YooAsset.Editor
var buildMapContext = context.GetContextObject();
var scriptableBuildParameters = buildParametersContext.Parameters as ScriptableBuildParameters;
- // 模拟构建模式下跳过引擎构建
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return;
-
// 构建内容
var buildContent = new BundleBuildContent(buildMapContext.GetPipelineBuilds());
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs
index df244ecf..9c3b9837 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs
@@ -13,7 +13,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
- CreateManifestFile(context);
+ CreateManifestFile(true, true, context);
}
protected override string[] GetBundleDepends(BuildContext context, string bundleName)
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs
index 5fa6569e..77534131 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs
@@ -9,17 +9,13 @@ namespace YooAsset.Editor
{
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreatePackageCatalog(buildParameters, buildMapContext);
- }
+ CreatePackagePatch(buildParameters, buildMapContext);
}
///
/// 拷贝补丁文件到补丁包目录
///
- private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
+ private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
{
var scriptableBuildParameters = buildParametersContext.Parameters as ScriptableBuildParameters;
string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs
index 5c7c8be9..fa85aa48 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs
@@ -13,12 +13,7 @@ namespace YooAsset.Editor
var buildParameters = context.GetContextObject();
var buildMapContext = context.GetContextObject();
var manifestContext = context.GetContextObject();
-
- var buildMode = buildParameters.Parameters.BuildMode;
- if (buildMode != EBuildMode.SimulateBuild)
- {
- CreateReportFile(buildParameters, buildMapContext, manifestContext);
- }
+ CreateReportFile(buildParameters, buildMapContext, manifestContext);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs
index 938f6070..6f118639 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
var buildParametersContext = context.GetContextObject();
- var buildMapContext = CreateBuildMap(buildParametersContext.Parameters);
+ var buildMapContext = CreateBuildMap(false, buildParametersContext.Parameters);
context.SetContextObject(buildMapContext);
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs
index 8d4ff541..b83fb77a 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs
@@ -16,12 +16,34 @@ namespace YooAsset.Editor
// 检测基础构建参数
buildParametersContext.CheckBuildParameters();
+ // 检测是否有未保存场景
+ if (EditorTools.HasDirtyScenes())
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !");
+ throw new Exception(message);
+ }
+
// 检测不被支持的构建模式
if (buildParameters.BuildMode == EBuildMode.ForceRebuild)
{
string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.ForceRebuild)} build mode !");
throw new Exception(message);
}
+
+ // 检测包裹输出目录是否存在
+ string packageOutputDirectory = buildParameters.GetPackageOutputDirectory();
+ if (Directory.Exists(packageOutputDirectory))
+ {
+ string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}");
+ throw new Exception(message);
+ }
+
+ // 如果输出目录不存在
+ string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory();
+ if (EditorTools.CreateDirectory(pipelineOutputDirectory))
+ {
+ BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
+ }
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs
index 4cc48128..f94a716d 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs
@@ -15,77 +15,45 @@ namespace YooAsset.Editor
protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
{
- var buildParametersContext = context.GetContextObject();
- var parameters = buildParametersContext.Parameters;
- var buildMode = parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
+ // 注意:当资源包的依赖列表发生变化的时候,ContentHash也会发生变化!
+ var buildResult = context.GetContextObject();
+ if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value))
{
- return "00000000000000000000000000000000"; //32位
+ return value.Hash.ToString();
}
else
{
- // 注意:当资源包的依赖列表发生变化的时候,ContentHash也会发生变化!
- var buildResult = context.GetContextObject();
- if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value))
- {
- return value.Hash.ToString();
- }
- else
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}");
- throw new Exception(message);
- }
+ string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}");
+ throw new Exception(message);
}
}
protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
{
- var buildParametersContext = context.GetContextObject();
- var parameters = buildParametersContext.Parameters;
- var buildMode = parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
+ var buildResult = context.GetContextObject();
+ if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value))
{
- return 0;
+ return value.Crc;
}
else
{
- var buildResult = context.GetContextObject();
- if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value))
- {
- return value.Crc;
- }
- else
- {
- string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}");
- throw new Exception(message);
- }
+ string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}");
+ throw new Exception(message);
}
}
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetFilePathTempHash(filePath);
- else
- return HashUtility.FileMD5(filePath);
+ return HashUtility.FileMD5(filePath);
}
protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return "00000000"; //8位
- else
- return HashUtility.FileCRC32(filePath);
+ return HashUtility.FileCRC32(filePath);
}
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
{
string filePath = bundleInfo.PackageSourceFilePath;
- var buildMode = buildParametersContext.Parameters.BuildMode;
- if (buildMode == EBuildMode.SimulateBuild)
- return GetBundleTempSize(bundleInfo);
- else
- return FileUtility.GetFileSize(filePath);
+ return FileUtility.GetFileSize(filePath);
}
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs
index 7b2066df..8fda913a 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs
@@ -16,10 +16,6 @@ namespace YooAsset.Editor
var buildParametersContext = context.GetContextObject();
var buildParameters = buildParametersContext.Parameters as ScriptableBuildParameters;
- // 模拟构建模式下跳过验证
- if (buildParameters.BuildMode == EBuildMode.SimulateBuild)
- return;
-
// 验证构建结果
if (buildParameters.VerifyBuildingResult)
{
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
index ec5c3e93..fc74d595 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs
@@ -14,7 +14,6 @@ namespace YooAsset.Editor
PackageOutputDirectoryExists = 115,
RecommendScriptBuildPipeline = 130,
BuildPipelineNotSupportBuildMode = 140,
- BuildPipelineNotSupportSharePackRule = 141,
// TaskGetBuildMap
RemoveInvalidTags = 200,
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs
index c483f4b2..0fcfaa7d 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs
@@ -15,10 +15,5 @@ namespace YooAsset.Editor
/// 增量构建模式
///
IncrementalBuild,
-
- ///
- /// 模拟构建模式
- ///
- SimulateBuild,
}
}
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs
index 85f33c02..01a70d02 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs
@@ -6,6 +6,11 @@ namespace YooAsset.Editor
///
public enum EBuildPipeline
{
+ ///
+ /// 编辑器下的模拟构建管线(ESBP)
+ ///
+ EditorSimulateBuildPipeline,
+
///
/// 传统内置构建管线 (BBP)
///
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
index 937df593..4dc3654b 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
@@ -55,7 +55,6 @@ namespace YooAsset.Editor
List buildModeList = new List();
buildModeList.Add(EBuildMode.ForceRebuild);
buildModeList.Add(EBuildMode.IncrementalBuild);
- buildModeList.Add(EBuildMode.SimulateBuild);
return buildModeList;
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs
new file mode 100644
index 00000000..0bda5b69
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs
@@ -0,0 +1,72 @@
+#if UNITY_2019_4_OR_NEWER
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using UnityEditor.UIElements;
+using UnityEngine.UIElements;
+
+namespace YooAsset.Editor
+{
+ internal class EditorSimulateBuildPipelineViewer : BuildPipelineViewerBase
+ {
+ public EditorSimulateBuildPipelineViewer(string packageName, BuildTarget buildTarget, VisualElement parent)
+ : base(packageName, EBuildPipeline.RawFileBuildPipeline, buildTarget, parent)
+ {
+ var compressionField = Root.Q("Compression");
+ UIElementsTools.SetElementVisible(compressionField, false);
+
+ var encryptionContainer = Root.Q("EncryptionContainer");
+ UIElementsTools.SetElementVisible(encryptionContainer, false);
+
+ var fileNameStyleField = Root.Q("FileNameStyle");
+ UIElementsTools.SetElementVisible(fileNameStyleField, false);
+
+ var copyBuildinFileOptionField = Root.Q("CopyBuildinFileOption");
+ UIElementsTools.SetElementVisible(copyBuildinFileOptionField, false);
+
+ var CopyBuildinFileParamField = Root.Q("CopyBuildinFileParam");
+ UIElementsTools.SetElementVisible(CopyBuildinFileParamField, false);
+ }
+
+ ///
+ /// 执行构建
+ ///
+ protected override void ExecuteBuild()
+ {
+ var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline);
+ var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline);
+ var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline);
+ var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline);
+
+ EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters();
+ buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+ buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+ buildParameters.BuildPipeline = BuildPipeline.ToString();
+ buildParameters.BuildTarget = BuildTarget;
+ buildParameters.BuildMode = buildMode;
+ buildParameters.PackageName = PackageName;
+ buildParameters.PackageVersion = GetPackageVersion();
+ buildParameters.VerifyBuildingResult = true;
+ buildParameters.FileNameStyle = fileNameStyle;
+ buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
+ buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
+ buildParameters.EncryptionServices = CreateEncryptionInstance();
+
+ EditorSimulateBuildPipeline pipeline = new EditorSimulateBuildPipeline();
+ var buildResult = pipeline.Run(buildParameters, true);
+ if (buildResult.Success)
+ EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
+ }
+
+ protected override List GetSupportBuildModes()
+ {
+ List buildModeList = new List();
+ buildModeList.Add(EBuildMode.ForceRebuild);
+ return buildModeList;
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta
new file mode 100644
index 00000000..e9538a8e
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 01e426f05b237b340881910d779e4c2e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
index 063869f3..f042a502 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
@@ -53,7 +53,6 @@ namespace YooAsset.Editor
{
List buildModeList = new List();
buildModeList.Add(EBuildMode.ForceRebuild);
- buildModeList.Add(EBuildMode.SimulateBuild);
return buildModeList;
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
index 3f878733..4ff5ac48 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
@@ -54,7 +54,6 @@ namespace YooAsset.Editor
{
List buildModeList = new List();
buildModeList.Add(EBuildMode.IncrementalBuild);
- buildModeList.Add(EBuildMode.SimulateBuild);
return buildModeList;
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs
index 87374888..f3c8c03a 100644
--- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs
+++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs
@@ -140,7 +140,7 @@ namespace YooAsset.Editor
public List GetAllCollectAssets(CollectCommand command, AssetBundleCollectorGroup group)
{
// 注意:模拟构建模式下只收集主资源
- if (command.BuildMode == EBuildMode.SimulateBuild)
+ if (command.SimulateBuild)
{
if (CollectorType != ECollectorType.MainAssetCollector)
return new List();
@@ -220,7 +220,7 @@ namespace YooAsset.Editor
CollectAssetInfo collectAssetInfo = new CollectAssetInfo(CollectorType, bundleName, address, assetInfo, assetTags);
// 注意:模拟构建模式下不需要收集依赖资源
- if (command.BuildMode == EBuildMode.SimulateBuild)
+ if (command.SimulateBuild)
collectAssetInfo.DependAssets = new List();
else
collectAssetInfo.DependAssets = GetAllDependencies(command, assetInfo.AssetPath);
diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs
index 2e468223..5f9440b6 100644
--- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs
+++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs
@@ -89,7 +89,7 @@ namespace YooAsset.Editor
///
/// 获取包裹收集的资源文件
///
- public CollectResult GetPackageAssets(EBuildMode buildMode, string packageName)
+ public CollectResult GetPackageAssets(bool simulateBuild, string packageName)
{
if (string.IsNullOrEmpty(packageName))
throw new Exception("Build package name is null or empty !");
@@ -100,7 +100,7 @@ namespace YooAsset.Editor
// 创建资源收集命令
IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(package.IgnoreRuleName);
- CollectCommand command = new CollectCommand(buildMode, packageName,
+ CollectCommand command = new CollectCommand(simulateBuild, packageName,
package.EnableAddressable,
package.LocationToLower,
package.IncludeAssetGUID,
diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs
index f4691727..2b2b073b 100644
--- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs
+++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs
@@ -42,7 +42,7 @@ namespace YooAsset.Editor
private Toggle _includeAssetGUIDToogle;
private Toggle _autoCollectShadersToogle;
private PopupField _ignoreRulePopupField;
-
+
private VisualElement _packageContainer;
private ListView _packageListView;
private TextField _packageNameTxt;
@@ -172,10 +172,10 @@ namespace YooAsset.Editor
_ignoreRulePopupField.style.width = 300;
_ignoreRulePopupField.formatListItemCallback = FormatListItemCallback;
_ignoreRulePopupField.formatSelectedValueCallback = FormatSelectedValueCallback;
- _ignoreRulePopupField.RegisterValueChangedCallback(evt =>
+ _ignoreRulePopupField.RegisterValueChangedCallback(evt =>
{
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
- if(selectPackage != null)
+ if (selectPackage != null)
{
selectPackage.IgnoreRuleName = evt.newValue.ClassName;
AssetBundleCollectorSettingData.ModifyPackage(selectPackage);
@@ -991,7 +991,7 @@ namespace YooAsset.Editor
try
{
IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(_ignoreRulePopupField.value.ClassName);
- CollectCommand command = new CollectCommand(EBuildMode.SimulateBuild,
+ CollectCommand command = new CollectCommand(true,
_packageNameTxt.value,
_enableAddressableToogle.value,
_locationToLowerToogle.value,
diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs b/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs
index dd2a206f..483f9e81 100644
--- a/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs
+++ b/Assets/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs
@@ -4,9 +4,9 @@ namespace YooAsset.Editor
public class CollectCommand
{
///
- /// 构建模式
+ /// 模拟构建模式
///
- public EBuildMode BuildMode { private set; get; }
+ public bool SimulateBuild { private set; get; }
///
/// 包裹名称
@@ -49,11 +49,11 @@ namespace YooAsset.Editor
public IIgnoreRule IgnoreRule { private set; get; }
- public CollectCommand(EBuildMode buildMode, string packageName,
+ public CollectCommand(bool simulateBuild, string packageName,
bool enableAddressable, bool locationToLower, bool includeAssetGUID,
bool autoCollectShaders, bool uniqueBundleName, IIgnoreRule ignoreRule)
{
- BuildMode = buildMode;
+ SimulateBuild = simulateBuild;
PackageName = packageName;
EnableAddressable = enableAddressable;
LocationToLower = locationToLower;