TaskCreatePackage.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace YooAsset.Editor
  4. {
  5. [TaskAttribute("制作包裹")]
  6. public class TaskCreatePackage : IBuildTask
  7. {
  8. void IBuildTask.Run(BuildContext context)
  9. {
  10. var buildParameters = context.GetContextObject<BuildParametersContext>();
  11. var buildMapContext = context.GetContextObject<BuildMapContext>();
  12. var buildMode = buildParameters.Parameters.BuildMode;
  13. if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild)
  14. {
  15. CopyPackageFiles(buildParameters, buildMapContext);
  16. }
  17. }
  18. /// <summary>
  19. /// 拷贝补丁文件到补丁包目录
  20. /// </summary>
  21. private void CopyPackageFiles(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext)
  22. {
  23. var buildParameters = buildParametersContext.Parameters;
  24. string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory();
  25. string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
  26. BuildLogger.Log($"开始拷贝补丁文件到补丁包目录:{packageOutputDirectory}");
  27. if (buildParameters.BuildPipeline == EBuildPipeline.ScriptableBuildPipeline)
  28. {
  29. // 拷贝构建日志
  30. {
  31. string sourcePath = $"{pipelineOutputDirectory}/buildlogtep.json";
  32. string destPath = $"{packageOutputDirectory}/buildlogtep.json";
  33. EditorTools.CopyFile(sourcePath, destPath, true);
  34. }
  35. // 拷贝代码防裁剪配置
  36. if (buildParameters.SBPParameters.WriteLinkXML)
  37. {
  38. string sourcePath = $"{pipelineOutputDirectory}/link.xml";
  39. string destPath = $"{packageOutputDirectory}/link.xml";
  40. EditorTools.CopyFile(sourcePath, destPath, true);
  41. }
  42. }
  43. else if (buildParameters.BuildPipeline == EBuildPipeline.BuiltinBuildPipeline)
  44. {
  45. // 拷贝UnityManifest序列化文件
  46. {
  47. string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}";
  48. string destPath = $"{packageOutputDirectory}/{YooAssetSettings.OutputFolderName}";
  49. EditorTools.CopyFile(sourcePath, destPath, true);
  50. }
  51. // 拷贝UnityManifest文本文件
  52. {
  53. string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}.manifest";
  54. string destPath = $"{packageOutputDirectory}/{YooAssetSettings.OutputFolderName}.manifest";
  55. EditorTools.CopyFile(sourcePath, destPath, true);
  56. }
  57. }
  58. else
  59. {
  60. throw new System.NotImplementedException();
  61. }
  62. // 拷贝所有补丁文件
  63. int progressValue = 0;
  64. int fileTotalCount = buildMapContext.Collection.Count;
  65. foreach (var bundleInfo in buildMapContext.Collection)
  66. {
  67. EditorTools.CopyFile(bundleInfo.PackageSourceFilePath, bundleInfo.PackageDestFilePath, true);
  68. EditorTools.DisplayProgressBar("拷贝补丁文件", ++progressValue, fileTotalCount);
  69. }
  70. EditorTools.ClearProgressBar();
  71. }
  72. }
  73. }