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 打包相关参数 protected string packageName; protected string selectedBuildPipelines; protected 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); //CustomPlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption); } private void SetCopyBuildinFileParams() { AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines, copyBuildinFileParams); //CustomPlayerPrefs.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); // } } /// /// 创建加密类实例 /// 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; } /// /// 内置着色器资源包名称 /// 注意:和自动收集的着色器资源包名保持一致! /// protected string GetBuiltinShaderBundleName() { var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName; var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult(); return packRuleResult.GetBundleName(packageName, uniqueBundleName); } } }