151 lines
5.8 KiB
C#
151 lines
5.8 KiB
C#
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;
|
||
|
||
// protected bool isSimulate;
|
||
// protected bool isRaw;
|
||
|
||
[Title("清理构建缓存", titleAlignment: TitleAlignments.Centered)]
|
||
[HorizontalGroup("BuildCache")]
|
||
[InfoBox("当不勾选此项的时候,引擎会开启增量打包模式,会极大提高构建速度!")]
|
||
[OnValueChanged("SetBuildCacheToggle")]
|
||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||
public bool clearBuildCacheToggle;
|
||
|
||
[Title("依赖数据库", titleAlignment: TitleAlignments.Centered)]
|
||
[HorizontalGroup("BuildCache")]
|
||
[InfoBox("当开启此项的时候,会极大提高构建速度!")]
|
||
[OnValueChanged("SetUseAssetDependencyDB")]
|
||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||
public bool useAssetDependencyDBToggle;
|
||
|
||
// [Title("资源包的压缩方式", titleAlignment: TitleAlignments.Centered)]
|
||
// [HorizontalGroup("FileStyle"), HideLabel]
|
||
// [OnValueChanged("SetCompression")]
|
||
// [ShowIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.BuiltinBuildPipeline")]
|
||
private 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("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||
public EBuildinFileCopyOption copyBuildinFileOption;
|
||
|
||
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
|
||
[OnValueChanged("SetCopyBuildinFileParams")]
|
||
[ShowIf(
|
||
"@copyBuildinFileOption==EBuildinFileCopyOption.ClearAndCopyByTags||copyBuildinFileOption==EBuildinFileCopyOption.OnlyCopyByTags ")]
|
||
public string copyBuildinFileParams;
|
||
|
||
public AbstractBuildPipelineViewer(BuildAssetDataSetting dataSetting)
|
||
{
|
||
this.dataSetting = dataSetting;
|
||
useAssetDependencyDBToggle = true;
|
||
SetUseAssetDependencyDB();
|
||
clearBuildCacheToggle = false;
|
||
SetBuildCacheToggle();
|
||
compression = ECompressOption.LZ4;
|
||
SetCompression();
|
||
fileNameStyle = EFileNameStyle.BundleName;
|
||
SetFileNameStyle();
|
||
copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
|
||
SetCopyBuildinFileOption();
|
||
}
|
||
|
||
#region AssetBuild
|
||
|
||
private void SetCompression()
|
||
{
|
||
AssetBundleBuilderSetting.SetPackageCompressOption(dataSetting.packageName, dataSetting.selectedBuildPipelines,
|
||
compression);
|
||
}
|
||
|
||
private void SetFileNameStyle()
|
||
{
|
||
|
||
AssetBundleBuilderSetting.SetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines,
|
||
fileNameStyle);
|
||
}
|
||
|
||
private void SetCopyBuildinFileOption()
|
||
{
|
||
|
||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(dataSetting.packageName,
|
||
dataSetting.selectedBuildPipelines, copyBuildinFileOption);
|
||
|
||
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
|
||
}
|
||
|
||
private void SetCopyBuildinFileParams()
|
||
{
|
||
|
||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(dataSetting.packageName,
|
||
dataSetting.selectedBuildPipelines, copyBuildinFileParams);
|
||
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
|
||
}
|
||
|
||
public void SetBuildCacheToggle()
|
||
{
|
||
AssetBundleBuilderSetting.SetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines,
|
||
clearBuildCacheToggle);
|
||
}
|
||
|
||
private void SetUseAssetDependencyDB()
|
||
{
|
||
|
||
AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines,
|
||
useAssetDependencyDBToggle);
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
|
||
public virtual void ExecuteBuild()
|
||
{
|
||
// GetPackageVersion();
|
||
if (dataSetting.packageName == "Main")
|
||
{
|
||
dataSetting.GetBuildPackageVersion(true);
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 创建加密类实例
|
||
/// </summary>
|
||
protected IEncryptionServices CreateEncryptionInstance()
|
||
{
|
||
var encyptionClassName =
|
||
AssetBundleBuilderSetting.GetPackageEncyptionClassName(dataSetting.packageName,
|
||
dataSetting.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;
|
||
}
|
||
|
||
|
||
}
|
||
} |