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
|
|
|
|
|
|
{
|
2022-04-30 23:14:20 +08:00
|
|
|
|
[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
|
|
|
|
|
2022-05-05 21:12:44 +08:00
|
|
|
|
// 模拟构建模式下跳过引擎构建
|
2022-05-02 23:15:09 +08:00
|
|
|
|
var buildMode = buildParametersContext.Parameters.BuildMode;
|
2022-05-05 21:12:44 +08:00
|
|
|
|
if (buildMode == EBuildMode.SimulateBuild)
|
2022-05-02 23:15:09 +08:00
|
|
|
|
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("构建过程中发生错误!");
|
|
|
|
|
|
|
2022-05-02 23:15:09 +08:00
|
|
|
|
BuildRunner.Log("Unity引擎打包成功!");
|
2022-03-01 10:44:12 +08:00
|
|
|
|
UnityManifestContext unityManifestContext = new UnityManifestContext();
|
|
|
|
|
|
unityManifestContext.UnityManifest = unityManifest;
|
|
|
|
|
|
context.SetContextObject(unityManifestContext);
|
|
|
|
|
|
|
|
|
|
|
|
// 拷贝原生文件
|
2022-05-02 23:15:09 +08:00
|
|
|
|
if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild)
|
2022-03-01 10:44:12 +08:00
|
|
|
|
{
|
2022-04-22 15:14:37 +08:00
|
|
|
|
CopyRawBundle(buildMapContext, buildParametersContext);
|
2022-03-01 10:44:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2022-04-22 15:14:37 +08:00
|
|
|
|
/// 拷贝原生文件
|
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
|
|
|
|
{
|
2022-04-22 15:14:37 +08:00
|
|
|
|
foreach (var bundleInfo in buildMapContext.BundleInfos)
|
2022-03-01 10:44:12 +08:00
|
|
|
|
{
|
2022-04-22 15:14:37 +08:00
|
|
|
|
if (bundleInfo.IsRawFile)
|
2022-03-01 10:44:12 +08:00
|
|
|
|
{
|
2022-04-22 15:14:37 +08:00
|
|
|
|
string dest = $"{buildParametersContext.PipelineOutputDirectory}/{bundleInfo.BundleName}";
|
|
|
|
|
|
foreach (var buildAsset in bundleInfo.BuildinAssets)
|
2022-03-01 10:44:12 +08:00
|
|
|
|
{
|
2022-04-22 15:14:37 +08:00
|
|
|
|
if (buildAsset.IsRawAsset)
|
|
|
|
|
|
EditorTools.CopyFile(buildAsset.AssetPath, dest, true);
|
2022-03-01 10:44:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|