Files
plugin-library/Assets/00.StaryEvoTools/Editor/BuildAsset/IBuildPipelineViewer.cs

186 lines
7.0 KiB
C#
Raw Normal View History

2025-03-31 11:16:52 +08:00
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using Stary.Evo.Editor;
using UnityEditor;
using UnityEngine;
using YooAsset;
using YooAsset.Editor;
namespace Stary.Evo.Editor
{
[Serializable]
public class AbstractBuildPipelineViewer
{
2025-10-24 11:11:59 +08:00
//protected BuildAssetDataSetting dataSetting;
2025-03-31 11:16:52 +08:00
2025-10-24 11:11:59 +08:00
#region
2025-10-31 12:24:49 +08:00
protected string packageName;
2025-10-24 11:11:59 +08:00
protected string selectedBuildPipelines;
2025-10-31 12:24:49 +08:00
protected string packageVersion;
2025-10-24 11:11:59 +08:00
#endregion
2025-04-11 09:56:06 +08:00
// protected bool isSimulate;
// protected bool isRaw;
2025-03-31 11:16:52 +08:00
[Title("清理构建缓存", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当不勾选此项的时候,引擎会开启增量打包模式,会极大提高构建速度!")]
[OnValueChanged("SetBuildCacheToggle")]
2025-10-24 11:11:59 +08:00
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
2025-03-31 11:16:52 +08:00
public bool clearBuildCacheToggle;
[Title("依赖数据库", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当开启此项的时候,会极大提高构建速度!")]
[OnValueChanged("SetUseAssetDependencyDB")]
2025-10-24 11:11:59 +08:00
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public bool useAssetDependencyDBToggle=true;
2025-03-31 11:16:52 +08:00
2025-07-30 17:53:18 +08:00
[Title("资源包的压缩方式", titleAlignment: TitleAlignments.Centered)]
2025-07-30 18:02:40 +08:00
[HorizontalGroup("BuildCache"), HideLabel]
2025-07-30 17:53:18 +08:00
[InfoBox("推荐LZ4压缩方式")]
[OnValueChanged("SetCompression")]
2025-10-24 11:11:59 +08:00
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
2025-07-30 18:02:40 +08:00
public ECompressOption compression = ECompressOption.LZ4;
2025-03-31 11:16:52 +08:00
2025-04-27 10:22:16 +08:00
// [Title("资源包文件名称样式", titleAlignment: TitleAlignments.Centered)]
// [HorizontalGroup("FileStyle"), HideLabel]
// [OnValueChanged("SetFileNameStyle")]
// [HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
private EFileNameStyle fileNameStyle = EFileNameStyle.BundleName;
2025-03-31 11:16:52 +08:00
[Title("首包资源文件的拷贝方式", titleAlignment: TitleAlignments.Centered)]
2025-04-27 10:22:16 +08:00
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
[InfoBox("资源拷贝方式是否拷贝StreamingAssets")]
2025-03-31 11:16:52 +08:00
[OnValueChanged("SetCopyBuildinFileOption")]
2025-10-24 11:11:59 +08:00
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public EBuildinFileCopyOption copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
2025-04-27 10:22:16 +08:00
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
2025-03-31 11:16:52 +08:00
[OnValueChanged("SetCopyBuildinFileParams")]
[ShowIf(
"@copyBuildinFileOption==EBuildinFileCopyOption.ClearAndCopyByTags||copyBuildinFileOption==EBuildinFileCopyOption.OnlyCopyByTags ")]
public string copyBuildinFileParams;
2025-10-24 11:11:59 +08:00
public AbstractBuildPipelineViewer(string packageName,string selectedBuildPipelines,string packageVersion)
2025-03-31 11:16:52 +08:00
{
2025-10-24 11:11:59 +08:00
//this.dataSetting = dataSetting;
SetBuildPackageData(packageName,selectedBuildPipelines,packageVersion);
2025-03-31 11:16:52 +08:00
useAssetDependencyDBToggle = true;
2025-05-06 17:33:55 +08:00
SetUseAssetDependencyDB();
2025-03-31 11:16:52 +08:00
clearBuildCacheToggle = false;
2025-05-06 17:33:55 +08:00
SetBuildCacheToggle();
2025-03-31 11:16:52 +08:00
compression = ECompressOption.LZ4;
2025-05-06 17:33:55 +08:00
SetCompression();
2025-03-31 11:16:52 +08:00
fileNameStyle = EFileNameStyle.BundleName;
2025-05-06 17:33:55 +08:00
SetFileNameStyle();
2025-03-31 11:16:52 +08:00
copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
2025-05-06 17:33:55 +08:00
SetCopyBuildinFileOption();
2025-03-31 11:16:52 +08:00
}
2025-10-24 11:11:59 +08:00
public void SetBuildPackageData(string packageName,string selectedBuildPipelines,string packageVersion)
{
this.packageName = packageName;
this.selectedBuildPipelines = selectedBuildPipelines;
this.packageVersion = packageVersion;
}
2025-10-31 11:18:23 +08:00
public void SetBuildPackagePackageName(string packageName)
{
this.packageName = packageName;
}
public void SetBuildPackagePackageVersion(string packageVersion)
{
this.packageVersion = packageVersion;
}
2025-03-31 11:16:52 +08:00
#region AssetBuild
private void SetCompression()
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageCompressOption(packageName, selectedBuildPipelines,
2025-03-31 11:16:52 +08:00
compression);
}
private void SetFileNameStyle()
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageFileNameStyle(packageName, selectedBuildPipelines,
2025-03-31 11:16:52 +08:00
fileNameStyle);
}
private void SetCopyBuildinFileOption()
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(packageName,
selectedBuildPipelines, copyBuildinFileOption);
2025-03-31 11:16:52 +08:00
2026-01-07 18:20:13 +08:00
//CustomPlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
2025-03-31 11:16:52 +08:00
}
private void SetCopyBuildinFileParams()
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(packageName,
selectedBuildPipelines, copyBuildinFileParams);
2026-01-07 18:20:13 +08:00
//CustomPlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
2025-03-31 11:16:52 +08:00
}
public void SetBuildCacheToggle()
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageClearBuildCache(packageName, selectedBuildPipelines,
2025-03-31 11:16:52 +08:00
clearBuildCacheToggle);
}
2025-10-24 11:11:59 +08:00
public void SetUseAssetDependencyDB()
2025-03-31 11:16:52 +08:00
{
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines,
2025-03-31 11:16:52 +08:00
useAssetDependencyDBToggle);
}
#endregion
public virtual void ExecuteBuild()
{
// GetPackageVersion();
2025-06-19 15:33:28 +08:00
// if (dataSetting.packageName == "Main")
// {
// dataSetting.GetBuildPackageVersion(true);
// }
2025-03-31 11:16:52 +08:00
}
/// <summary>
/// 创建加密类实例
/// </summary>
protected IEncryptionServices CreateEncryptionInstance()
{
var encyptionClassName =
2025-10-24 11:11:59 +08:00
AssetBundleBuilderSetting.GetPackageEncyptionServicesClassName(packageName,
selectedBuildPipelines);
2025-03-31 11:16:52 +08:00
var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices));
var classType = encryptionClassTypes.Find(x => x.FullName.Equals(encyptionClassName));
if (classType != null)
return (IEncryptionServices)Activator.CreateInstance(classType);
else
return null;
}
2026-01-06 16:22:45 +08:00
/// <summary>
/// 内置着色器资源包名称
/// 注意:和自动收集的着色器资源包名保持一致!
/// </summary>
protected string GetBuiltinShaderBundleName()
{
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
return packRuleResult.GetBundleName(packageName, uniqueBundleName);
}
2025-03-31 11:16:52 +08:00
}
}