com.alicizax.unity.tuyoogam.../Editor/AssetBundleCollector/CollectCommand.cs

126 lines
3.2 KiB
C#
Raw Normal View History

2025-01-09 11:31:04 +08:00

namespace YooAsset.Editor
{
2025-09-23 12:03:44 +08:00
public enum ECollectFlags
{
None = 0,
/// <summary>
/// 不收集依赖资源
/// </summary>
IgnoreGetDependencies = 1 << 0,
/// <summary>
/// 忽略静态收集器
/// </summary>
IgnoreStaticCollector = 1 << 1,
/// <summary>
/// 忽略依赖收集器
/// </summary>
IgnoreDependCollector = 1 << 2,
}
2025-01-09 11:31:04 +08:00
public class CollectCommand
{
/// <summary>
/// 包裹名称
/// </summary>
public string PackageName { private set; get; }
/// <summary>
2025-02-28 16:11:01 +08:00
/// 忽略规则实例
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public IIgnoreRule IgnoreRule { private set; get; }
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 模拟构建模式
2025-01-09 11:31:04 +08:00
/// </summary>
2025-09-23 12:03:44 +08:00
public bool SimulateBuild
{
set
{
SetFlag(ECollectFlags.IgnoreGetDependencies, value);
SetFlag(ECollectFlags.IgnoreStaticCollector, value);
SetFlag(ECollectFlags.IgnoreDependCollector, value);
}
}
/// <summary>
/// 窗口收集模式
/// </summary>
public int CollectFlags { set; get; } = 0;
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 资源包名唯一化
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public bool UniqueBundleName { set; get; }
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 使用资源依赖数据库
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public bool UseAssetDependencyDB { set; get; }
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 启用可寻址资源定位
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public bool EnableAddressable { set; get; }
2025-01-09 11:31:04 +08:00
2025-09-10 16:04:39 +08:00
/// <summary>
/// 支持无后缀名的资源定位地址
/// </summary>
public bool SupportExtensionless { set; get; }
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 资源定位地址大小写不敏感
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public bool LocationToLower { set; get; }
2025-01-09 11:31:04 +08:00
/// <summary>
2025-02-28 16:11:01 +08:00
/// 包含资源GUID数据
2025-01-09 11:31:04 +08:00
/// </summary>
2025-02-28 16:11:01 +08:00
public bool IncludeAssetGUID { set; get; }
2025-01-09 11:31:04 +08:00
2025-02-28 16:11:01 +08:00
/// <summary>
/// 自动收集所有着色器
/// </summary>
public bool AutoCollectShaders { set; get; }
2025-01-09 11:31:04 +08:00
private AssetDependencyCache _assetDependency;
public AssetDependencyCache AssetDependency
{
get
{
if (_assetDependency == null)
_assetDependency = new AssetDependencyCache(UseAssetDependencyDB);
return _assetDependency;
}
}
2025-02-28 16:11:01 +08:00
public CollectCommand(string packageName, IIgnoreRule ignoreRule)
{
PackageName = packageName;
IgnoreRule = ignoreRule;
}
2025-09-23 12:03:44 +08:00
/// <summary>
/// 设置标记位
/// </summary>
public void SetFlag(ECollectFlags flag, bool isOn)
{
if (isOn)
CollectFlags |= (int)flag; // 开启指定标志位
else
CollectFlags &= ~(int)flag; // 关闭指定标志位
}
/// <summary>
/// 查询标记位
/// </summary>
public bool IsFlagSet(ECollectFlags flag)
{
return (CollectFlags & (int)flag) != 0;
}
2025-01-09 11:31:04 +08:00
}
}