| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.Reflection;
 
- using System.Linq;
 
- using UnityEngine;
 
- using UnityEditor;
 
- namespace YooAsset.Editor
 
- {
 
- 	public class AssetBundleBuilder
 
- 	{
 
- 		private readonly BuildContext _buildContext = new BuildContext();
 
- 		/// <summary>
 
- 		/// 构建资源包
 
- 		/// </summary>
 
- 		public BuildResult Run(BuildParameters buildParameters, List<IBuildTask> buildPipeline)
 
- 		{
 
- 			// 检测构建参数是否为空
 
- 			if (buildParameters == null)
 
- 				throw new Exception($"{nameof(buildParameters)} is null !");
 
- 			// 检测构建参数是否为空
 
- 			if (buildPipeline.Count == 0)
 
- 				throw new Exception($"Build pipeline is empty !");	
 
- 			// 清空旧数据
 
- 			_buildContext.ClearAllContext();
 
- 			// 构建参数
 
- 			var buildParametersContext = new BuildParametersContext(buildParameters);
 
- 			_buildContext.SetContextObject(buildParametersContext);
 
- 			// 初始化日志
 
- 			BuildLogger.InitLogger(buildParameters.EnableLog);
 
- 			// 执行构建流程
 
- 			var buildResult = BuildRunner.Run(buildPipeline, _buildContext);
 
- 			if (buildResult.Success)
 
- 			{
 
- 				buildResult.OutputPackageDirectory = buildParametersContext.GetPackageOutputDirectory();
 
- 				BuildLogger.Log($"{buildParameters.BuildMode} pipeline build succeed !");
 
- 			}
 
- 			else
 
- 			{
 
- 				BuildLogger.Warning($"{buildParameters.BuildMode} pipeline build failed !");
 
- 				BuildLogger.Error($"Build task failed : {buildResult.FailedTask}");
 
- 				BuildLogger.Error(buildResult.ErrorInfo);
 
- 			}
 
- 			return buildResult;
 
- 		}
 
- 		/// <summary>
 
- 		/// 构建资源包
 
- 		/// </summary>
 
- 		public BuildResult Run(BuildParameters buildParameters)
 
- 		{
 
- 			var buildPipeline = GetDefaultBuildPipeline(buildParameters.BuildPipeline);
 
- 			return Run(buildParameters, buildPipeline);
 
- 		}
 
- 		/// <summary>
 
- 		/// 获取默认的构建流程
 
- 		/// </summary>
 
- 		private List<IBuildTask> GetDefaultBuildPipeline(EBuildPipeline buildPipeline)
 
- 		{
 
- 			// 获取任务节点的属性集合
 
- 			if (buildPipeline == EBuildPipeline.BuiltinBuildPipeline)
 
- 			{
 
- 				List<IBuildTask> pipeline = new List<IBuildTask>
 
- 				{
 
- 					new TaskPrepare(), //前期准备工作
 
- 					new TaskGetBuildMap(), //获取构建列表
 
- 					new TaskBuilding(), //开始执行构建
 
- 					new TaskCopyRawFile(), //拷贝原生文件
 
- 					new TaskVerifyBuildResult(), //验证构建结果
 
- 					new TaskEncryption(), //加密资源文件
 
- 					new TaskUpdateBundleInfo(), //更新资源包信息
 
- 					new TaskCreateManifest(), //创建清单文件
 
- 					new TaskCreateReport(), //创建报告文件
 
- 					new TaskCreatePackage(), //制作包裹
 
- 					new TaskCopyBuildinFiles(), //拷贝内置文件
 
- 				};
 
- 				return pipeline;
 
- 			}
 
- 			else if (buildPipeline == EBuildPipeline.ScriptableBuildPipeline)
 
- 			{
 
- 				List<IBuildTask> pipeline = new List<IBuildTask>
 
- 				{
 
- 					new TaskPrepare(), //前期准备工作
 
- 					new TaskGetBuildMap(), //获取构建列表
 
- 					new TaskBuilding_SBP(), //开始执行构建
 
- 					new TaskCopyRawFile(), //拷贝原生文件
 
- 					new TaskVerifyBuildResult_SBP(), //验证构建结果
 
- 					new TaskEncryption(), //加密资源文件
 
- 					new TaskUpdateBundleInfo(), //更新补丁信息
 
- 					new TaskCreateManifest(), //创建清单文件
 
- 					new TaskCreateReport(), //创建报告文件
 
- 					new TaskCreatePackage(), //制作补丁包
 
- 					new TaskCopyBuildinFiles(), //拷贝内置文件
 
- 				};
 
- 				return pipeline;
 
- 			}
 
- 			else
 
- 			{
 
- 				throw new NotImplementedException();
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |