Files
Fishing2/Assets/Scripts/NBC/Runtime/Asset/Editor/Builder/BuildContext.cs
2025-07-03 14:16:18 +08:00

99 lines
2.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UnityEditor;
namespace NBC.Asset.Editor
{
public class BuildContext
{
public List<BuildAsset> Assets = new List<BuildAsset>();
public List<BuildBundle> Bundles = new List<BuildBundle>();
public List<string> Packages = new List<string>();
public void Add(GroupConfig groupConfig, List<BuildAsset> assets)
{
foreach (var asset in assets)
{
asset.Group = groupConfig;
AddOrUpdate(asset);
}
}
public void AddOrUpdate(BuildAsset asset)
{
Assets.Add(asset);
}
public void AddBundle(BuildBundle bundle)
{
Bundles.Add(bundle);
}
public BuildBundle GetBundle(string name)
{
return Bundles.FirstOrDefault(bundle => bundle.Name == name);
}
public List<BuildBundle> GenBundles()
{
Bundles.Clear();
Dictionary<string, BuildBundle> dictionary = new Dictionary<string, BuildBundle>();
foreach (var asset in Assets)
{
if (!dictionary.TryGetValue(asset.Bundle, out var bundle))
{
bundle = new BuildBundle
{
Name = asset.Bundle,
Tags = asset.Tags
};
dictionary[bundle.Name] = bundle;
}
bundle.AddAsset(asset);
}
foreach (var bundle in dictionary.Values)
{
AddBundle(bundle);
}
return Bundles;
}
public void SaveAssets()
{
var cache = Caches.Get();
cache.ClearAssets();
cache.AddOrUpdate(Assets);
cache.Save();
}
public void SaveBundles()
{
var cache = Caches.Get();
cache.ClearBundles();
cache.AddOrUpdate(Bundles);
cache.Save();
}
public List<AssetBundleBuild> GetAssetBundleBuilds()
{
List<AssetBundleBuild> builds = new List<AssetBundleBuild>();
for (int i = 0; i < Bundles.Count; i++)
{
var bundle = Bundles[i];
var build = new AssetBundleBuild
{
assetNames = bundle.GetAssetNames(),
assetBundleName = bundle.Name
};
builds.Add(build);
}
return builds;
}
}
}