Files
YooAsset/Assets/YooAsset/Editor/AssetBundleBuilder/BuildTasks/TaskBuilding.cs

64 lines
2.0 KiB
C#
Raw Normal View History

2022-03-01 10:44:12 +08:00
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace YooAsset.Editor
{
[TaskAttribute("资源构建内容打包")]
2022-03-01 10:44:12 +08:00
public class TaskBuilding : IBuildTask
{
public class UnityManifestContext : IContextObject
{
public AssetBundleManifest UnityManifest;
}
void IBuildTask.Run(BuildContext context)
{
2022-06-30 14:29:27 +08:00
var buildParametersContext = context.GetContextObject<BuildParametersContext>();
2022-04-02 15:12:08 +08:00
var buildMapContext = context.GetContextObject<BuildMapContext>();
2022-03-01 10:44:12 +08:00
// 模拟构建模式下跳过引擎构建
var buildMode = buildParametersContext.Parameters.BuildMode;
if (buildMode == EBuildMode.SimulateBuild)
return;
2022-03-01 10:44:12 +08:00
BuildAssetBundleOptions opt = buildParametersContext.GetPipelineBuildOptions();
AssetBundleManifest unityManifest = BuildPipeline.BuildAssetBundles(buildParametersContext.PipelineOutputDirectory, buildMapContext.GetPipelineBuilds(), opt, buildParametersContext.Parameters.BuildTarget);
if (unityManifest == null)
throw new Exception("构建过程中发生错误!");
BuildRunner.Log("Unity引擎打包成功");
2022-03-01 10:44:12 +08:00
UnityManifestContext unityManifestContext = new UnityManifestContext();
unityManifestContext.UnityManifest = unityManifest;
context.SetContextObject(unityManifestContext);
// 拷贝原生文件
if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild)
2022-03-01 10:44:12 +08:00
{
CopyRawBundle(buildMapContext, buildParametersContext);
2022-03-01 10:44:12 +08:00
}
}
/// <summary>
/// 拷贝原生文件
2022-03-01 10:44:12 +08:00
/// </summary>
2022-06-30 14:29:27 +08:00
private void CopyRawBundle(BuildMapContext buildMapContext, BuildParametersContext buildParametersContext)
2022-03-01 10:44:12 +08:00
{
foreach (var bundleInfo in buildMapContext.BundleInfos)
2022-03-01 10:44:12 +08:00
{
if (bundleInfo.IsRawFile)
2022-03-01 10:44:12 +08:00
{
string dest = $"{buildParametersContext.PipelineOutputDirectory}/{bundleInfo.BundleName}";
foreach (var buildAsset in bundleInfo.BuildinAssets)
2022-03-01 10:44:12 +08:00
{
if (buildAsset.IsRawAsset)
EditorTools.CopyFile(buildAsset.AssetPath, dest, true);
2022-03-01 10:44:12 +08:00
}
}
}
}
}
}