AssetBundleBuilder.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Reflection;
  5. using System.Linq;
  6. using UnityEngine;
  7. using UnityEditor;
  8. namespace YooAsset.Editor
  9. {
  10. public class AssetBundleBuilder
  11. {
  12. private readonly BuildContext _buildContext = new BuildContext();
  13. /// <summary>
  14. /// 构建资源包
  15. /// </summary>
  16. public BuildResult Run(BuildParameters buildParameters, List<IBuildTask> buildPipeline, bool enableLog)
  17. {
  18. // 检测构建参数是否为空
  19. if (buildParameters == null)
  20. throw new Exception($"{nameof(buildParameters)} is null !");
  21. // 检测构建参数是否为空
  22. if (buildPipeline.Count == 0)
  23. throw new Exception($"Build pipeline is empty !");
  24. // 清空旧数据
  25. _buildContext.ClearAllContext();
  26. // 构建参数
  27. var buildParametersContext = new BuildParametersContext(buildParameters);
  28. _buildContext.SetContextObject(buildParametersContext);
  29. // 初始化日志
  30. BuildLogger.InitLogger(enableLog);
  31. // 执行构建流程
  32. Debug.Log($"Begin to build package : {buildParameters.PackageName} by {buildParameters.BuildPipeline}");
  33. var buildResult = BuildRunner.Run(buildPipeline, _buildContext);
  34. if (buildResult.Success)
  35. {
  36. buildResult.OutputPackageDirectory = buildParametersContext.GetPackageOutputDirectory();
  37. BuildLogger.Log("Resource pipeline build success");
  38. }
  39. else
  40. {
  41. BuildLogger.Error($"{buildParameters.BuildPipeline} build failed !");
  42. BuildLogger.Error($"An error occurred in build task {buildResult.FailedTask}");
  43. BuildLogger.Error(buildResult.ErrorInfo);
  44. }
  45. return buildResult;
  46. }
  47. }
  48. }