Files
plugin-library/Assets/00.BuildOriginality/Editor/IBuildPipelineViewer.cs
2025-10-31 11:18:23 +08:00

177 lines
6.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
{
//protected BuildAssetDataSetting dataSetting;
#region
public string packageName;
protected string selectedBuildPipelines;
public string packageVersion;
#endregion
// protected bool isSimulate;
// protected bool isRaw;
[Title("清理构建缓存", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当不勾选此项的时候,引擎会开启增量打包模式,会极大提高构建速度!")]
[OnValueChanged("SetBuildCacheToggle")]
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public bool clearBuildCacheToggle;
[Title("依赖数据库", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当开启此项的时候,会极大提高构建速度!")]
[OnValueChanged("SetUseAssetDependencyDB")]
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public bool useAssetDependencyDBToggle=true;
[Title("资源包的压缩方式", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache"), HideLabel]
[InfoBox("推荐LZ4压缩方式")]
[OnValueChanged("SetCompression")]
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public ECompressOption compression = ECompressOption.LZ4;
// [Title("资源包文件名称样式", titleAlignment: TitleAlignments.Centered)]
// [HorizontalGroup("FileStyle"), HideLabel]
// [OnValueChanged("SetFileNameStyle")]
// [HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
private EFileNameStyle fileNameStyle = EFileNameStyle.BundleName;
[Title("首包资源文件的拷贝方式", titleAlignment: TitleAlignments.Centered)]
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
[InfoBox("资源拷贝方式是否拷贝StreamingAssets")]
[OnValueChanged("SetCopyBuildinFileOption")]
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
public EBuildinFileCopyOption copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
[OnValueChanged("SetCopyBuildinFileParams")]
[ShowIf(
"@copyBuildinFileOption==EBuildinFileCopyOption.ClearAndCopyByTags||copyBuildinFileOption==EBuildinFileCopyOption.OnlyCopyByTags ")]
public string copyBuildinFileParams;
public AbstractBuildPipelineViewer(string packageName,string selectedBuildPipelines,string packageVersion)
{
//this.dataSetting = dataSetting;
SetBuildPackageData(packageName,selectedBuildPipelines,packageVersion);
useAssetDependencyDBToggle = true;
SetUseAssetDependencyDB();
clearBuildCacheToggle = false;
SetBuildCacheToggle();
compression = ECompressOption.LZ4;
SetCompression();
fileNameStyle = EFileNameStyle.BundleName;
SetFileNameStyle();
copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
SetCopyBuildinFileOption();
}
public void SetBuildPackageData(string packageName,string selectedBuildPipelines,string packageVersion)
{
this.packageName = packageName;
this.selectedBuildPipelines = selectedBuildPipelines;
this.packageVersion = packageVersion;
}
public void SetBuildPackagePackageName(string packageName)
{
this.packageName = packageName;
}
public void SetBuildPackagePackageVersion(string packageVersion)
{
this.packageVersion = packageVersion;
}
#region AssetBuild
private void SetCompression()
{
AssetBundleBuilderSetting.SetPackageCompressOption(packageName, selectedBuildPipelines,
compression);
}
private void SetFileNameStyle()
{
AssetBundleBuilderSetting.SetPackageFileNameStyle(packageName, selectedBuildPipelines,
fileNameStyle);
}
private void SetCopyBuildinFileOption()
{
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(packageName,
selectedBuildPipelines, copyBuildinFileOption);
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
}
private void SetCopyBuildinFileParams()
{
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(packageName,
selectedBuildPipelines, copyBuildinFileParams);
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
}
public void SetBuildCacheToggle()
{
AssetBundleBuilderSetting.SetPackageClearBuildCache(packageName, selectedBuildPipelines,
clearBuildCacheToggle);
}
public void SetUseAssetDependencyDB()
{
AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines,
useAssetDependencyDBToggle);
}
#endregion
public virtual void ExecuteBuild()
{
// GetPackageVersion();
// if (dataSetting.packageName == "Main")
// {
// dataSetting.GetBuildPackageVersion(true);
// }
}
/// <summary>
/// 创建加密类实例
/// </summary>
protected IEncryptionServices CreateEncryptionInstance()
{
var encyptionClassName =
AssetBundleBuilderSetting.GetPackageEncyptionServicesClassName(packageName,
selectedBuildPipelines);
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;
}
}
}