TaskCopyBuildinFiles.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEditor;
  5. using UnityEngine;
  6. namespace YooAsset.Editor
  7. {
  8. [TaskAttribute("拷贝内置文件到流目录")]
  9. public class TaskCopyBuildinFiles : IBuildTask
  10. {
  11. void IBuildTask.Run(BuildContext context)
  12. {
  13. // 注意:我们只有在强制重建的时候才会拷贝
  14. var buildParameters = context.GetContextObject<BuildParametersContext>();
  15. if (buildParameters.Parameters.CopyBuildinTagFiles)
  16. {
  17. // 清空流目录
  18. AssetBundleBuilderHelper.ClearStreamingAssetsFolder();
  19. // 拷贝内置文件
  20. CopyBuildinFilesToStreaming(buildParameters.PipelineOutputDirectory, buildParameters.Parameters.BuildVersion);
  21. }
  22. }
  23. private void CopyBuildinFilesToStreaming(string pipelineOutputDirectory, int buildVersion)
  24. {
  25. // 加载补丁清单
  26. PatchManifest patchManifest = AssetBundleBuilderHelper.LoadPatchManifestFile(pipelineOutputDirectory, buildVersion);
  27. // 拷贝文件列表
  28. foreach (var patchBundle in patchManifest.BundleList)
  29. {
  30. if (patchBundle.IsBuildin == false)
  31. continue;
  32. string sourcePath = $"{pipelineOutputDirectory}/{patchBundle.BundleName}";
  33. string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsFolderPath()}/{patchBundle.FileName}";
  34. EditorTools.CopyFile(sourcePath, destPath, true);
  35. }
  36. // 拷贝清单文件
  37. {
  38. string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettingsData.GetPatchManifestFileName(buildVersion)}";
  39. string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsFolderPath()}/{YooAssetSettingsData.GetPatchManifestFileName(buildVersion)}";
  40. EditorTools.CopyFile(sourcePath, destPath, true);
  41. }
  42. // 拷贝清单哈希文件
  43. {
  44. string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettingsData.GetPatchManifestHashFileName(buildVersion)}";
  45. string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsFolderPath()}/{YooAssetSettingsData.GetPatchManifestHashFileName(buildVersion)}";
  46. EditorTools.CopyFile(sourcePath, destPath, true);
  47. }
  48. // 拷贝静态版本文件
  49. {
  50. string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettings.VersionFileName}";
  51. string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsFolderPath()}/{YooAssetSettings.VersionFileName}";
  52. EditorTools.CopyFile(sourcePath, destPath, true);
  53. }
  54. // 刷新目录
  55. AssetDatabase.Refresh();
  56. BuildRunner.Log($"内置文件拷贝完成:{AssetBundleBuilderHelper.GetStreamingAssetsFolderPath()}");
  57. }
  58. }
  59. }