Files
Fishing2/Assets/Scripts/NBC/Asset/Editor/Builder/Tasks/BuildBundleTask.cs

49 lines
1.8 KiB
C#

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace NBC.Asset.Editor
{
[Id(TaskId.BuildBundle)]
public class BuildBundleTask : BuildTask
{
private BuildContext _context;
public override void Run(BuildContext context)
{
_context = context;
var bundleDataList = _context.GenBundles();
List<AssetBundleBuild> builds = _context.GetAssetBundleBuilds();
EditUtil.CreateDirectory(BuildSettings.PlatformCachePath);
var manifest = BuildAssetBundles(BuildSettings.PlatformCachePath, builds.ToArray(),
BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);
if (manifest != null)
{
var bundles = manifest.GetAllAssetBundles();
foreach (var bundleName in bundles)
{
var bundle = _context.GetBundle(bundleName);
if (bundle != null)
{
var path = BuildSettings.GetCachePath(bundleName);
var hash = Util.ComputeHash(path);
bundle.Dependencies = manifest.GetAllDependencies(bundleName);
bundle.Hash = hash;
bundle.Size = Util.GetFileSize(path);
}
}
}
Histories.AddHistory(bundleDataList);
_context.SaveBundles();
}
private static AssetBundleManifest BuildAssetBundles(string outputPath, AssetBundleBuild[] builds,
BuildAssetBundleOptions options, BuildTarget target)
{
var manifest = BuildPipeline.BuildAssetBundles(outputPath, builds, options, target);
return manifest;
}
}
}