Files
YooAsset/Assets/YooAsset/Editor/AssetBundleBuilder/BuildTasks/TaskCreatePatchPackage.cs

79 lines
2.8 KiB
C#
Raw Normal View History

2022-03-01 10:44:12 +08:00
using System.Collections;
using System.Collections.Generic;
namespace YooAsset.Editor
{
[TaskAttribute("制作补丁包")]
2022-03-01 10:44:12 +08:00
public class TaskCreatePatchPackage : IBuildTask
{
void IBuildTask.Run(BuildContext context)
{
2022-06-30 14:29:27 +08:00
var buildParameters = context.GetContextObject<BuildParametersContext>();
var buildMapContext = context.GetContextObject<BuildMapContext>();
var buildMode = buildParameters.Parameters.BuildMode;
if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild)
{
CopyPatchFiles(buildParameters, buildMapContext);
}
2022-03-01 10:44:12 +08:00
}
/// <summary>
/// 拷贝补丁文件到补丁包目录
/// </summary>
private void CopyPatchFiles(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
2022-03-01 10:44:12 +08:00
{
2022-09-27 21:04:08 +08:00
var buildParameters = buildParametersContext.Parameters;
string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory();
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
BuildRunner.Log($"开始拷贝补丁文件到补丁包目录:{packageOutputDirectory}");
2022-03-01 10:44:12 +08:00
2022-09-27 21:04:08 +08:00
if (buildParameters.BuildPipeline == EBuildPipeline.ScriptableBuildPipeline)
2022-03-01 10:44:12 +08:00
{
// 拷贝构建日志
{
2022-09-27 21:04:08 +08:00
string sourcePath = $"{pipelineOutputDirectory}/buildlogtep.json";
string destPath = $"{packageOutputDirectory}/buildlogtep.json";
EditorTools.CopyFile(sourcePath, destPath, true);
}
2022-03-01 10:44:12 +08:00
// 拷贝代码防裁剪配置
2022-09-27 21:04:08 +08:00
if (buildParameters.SBPParameters.WriteLinkXML)
{
2022-09-27 21:04:08 +08:00
string sourcePath = $"{pipelineOutputDirectory}/link.xml";
string destPath = $"{packageOutputDirectory}/link.xml";
EditorTools.CopyFile(sourcePath, destPath, true);
}
}
else if (buildParameters.BuildPipeline == EBuildPipeline.BuiltinBuildPipeline)
2022-03-01 10:44:12 +08:00
{
// 拷贝UnityManifest序列化文件
{
2022-09-27 21:04:08 +08:00
string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}";
string destPath = $"{packageOutputDirectory}/{YooAssetSettings.OutputFolderName}";
EditorTools.CopyFile(sourcePath, destPath, true);
}
// 拷贝UnityManifest文本文件
{
2022-09-27 21:04:08 +08:00
string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}.manifest";
string destPath = $"{packageOutputDirectory}/{YooAssetSettings.OutputFolderName}.manifest";
EditorTools.CopyFile(sourcePath, destPath, true);
}
2022-03-01 10:44:12 +08:00
}
else
{
throw new System.NotImplementedException();
}
2022-03-01 10:44:12 +08:00
// 拷贝所有补丁文件
int progressValue = 0;
int patchFileTotalCount = buildMapContext.BundleInfos.Count;
foreach (var bundleInfo in buildMapContext.BundleInfos)
2022-03-01 10:44:12 +08:00
{
EditorTools.CopyFile(bundleInfo.PatchInfo.BuildOutputFilePath, bundleInfo.PatchInfo.PatchOutputFilePath, true);
EditorTools.DisplayProgressBar("拷贝补丁文件", ++progressValue, patchFileTotalCount);
2022-03-01 10:44:12 +08:00
}
EditorTools.ClearProgressBar();
}
}
}