TaskCopyBuildinFiles.cs 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEditor;
  5. using UnityEngine;
  6. namespace YooAsset.Editor
  7. {
  8. public class TaskCopyBuildinFiles
  9. {
  10. /// <summary>
  11. /// 拷贝首包资源文件
  12. /// </summary>
  13. internal void CopyBuildinFilesToStreaming(BuildParametersContext buildParametersContext, PackageManifest manifest)
  14. {
  15. EBuildinFileCopyOption copyOption = buildParametersContext.Parameters.BuildinFileCopyOption;
  16. string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
  17. string buildinRootDirectory = buildParametersContext.GetBuildinRootDirectory();
  18. string buildPackageName = buildParametersContext.Parameters.PackageName;
  19. string buildPackageVersion = buildParametersContext.Parameters.PackageVersion;
  20. // 清空内置文件的目录
  21. if (copyOption == EBuildinFileCopyOption.ClearAndCopyAll || copyOption == EBuildinFileCopyOption.ClearAndCopyByTags)
  22. {
  23. EditorTools.ClearFolder(buildinRootDirectory);
  24. }
  25. // 拷贝补丁清单文件
  26. {
  27. string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildPackageName, buildPackageVersion);
  28. string sourcePath = $"{packageOutputDirectory}/{fileName}";
  29. string destPath = $"{buildinRootDirectory}/{fileName}";
  30. EditorTools.CopyFile(sourcePath, destPath, true);
  31. }
  32. // 拷贝补丁清单哈希文件
  33. {
  34. string fileName = YooAssetSettingsData.GetPackageHashFileName(buildPackageName, buildPackageVersion);
  35. string sourcePath = $"{packageOutputDirectory}/{fileName}";
  36. string destPath = $"{buildinRootDirectory}/{fileName}";
  37. EditorTools.CopyFile(sourcePath, destPath, true);
  38. }
  39. // 拷贝补丁清单版本文件
  40. {
  41. string fileName = YooAssetSettingsData.GetPackageVersionFileName(buildPackageName);
  42. string sourcePath = $"{packageOutputDirectory}/{fileName}";
  43. string destPath = $"{buildinRootDirectory}/{fileName}";
  44. EditorTools.CopyFile(sourcePath, destPath, true);
  45. }
  46. // 拷贝文件列表(所有文件)
  47. if (copyOption == EBuildinFileCopyOption.ClearAndCopyAll || copyOption == EBuildinFileCopyOption.OnlyCopyAll)
  48. {
  49. foreach (var packageBundle in manifest.BundleList)
  50. {
  51. string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}";
  52. string destPath = $"{buildinRootDirectory}/{packageBundle.FileName}";
  53. EditorTools.CopyFile(sourcePath, destPath, true);
  54. }
  55. }
  56. // 拷贝文件列表(带标签的文件)
  57. if (copyOption == EBuildinFileCopyOption.ClearAndCopyByTags || copyOption == EBuildinFileCopyOption.OnlyCopyByTags)
  58. {
  59. string[] tags = buildParametersContext.Parameters.BuildinFileCopyParams.Split(';');
  60. foreach (var packageBundle in manifest.BundleList)
  61. {
  62. if (packageBundle.HasTag(tags) == false)
  63. continue;
  64. string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}";
  65. string destPath = $"{buildinRootDirectory}/{packageBundle.FileName}";
  66. EditorTools.CopyFile(sourcePath, destPath, true);
  67. }
  68. }
  69. // 刷新目录
  70. AssetDatabase.Refresh();
  71. BuildLogger.Log($"Buildin files copy complete: {buildinRootDirectory}");
  72. }
  73. }
  74. }