using System; using UnityEditor; using YooAsset; using YooAsset.Editor; namespace Stary.Evo.Editor { [Serializable] public class ScriptableBuildPipelineViewer:AbstractBuildPipelineViewer { public ScriptableBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName) { } public override void ExecuteBuild() { var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(dataSetting.packageName, dataSetting.selectedBuildPipelines); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(dataSetting.packageName, dataSetting.selectedBuildPipelines); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(dataSetting.packageName, dataSetting.selectedBuildPipelines); var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines); var builtinShaderBundleName = GetBuiltinShaderBundleName(); ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildPipeline = dataSetting.selectedBuildPipelines.ToString(); buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.PackageName = dataSetting.packageName; buildParameters.PackageVersion = dataSetting.GetBuildPackageVersion(); buildParameters.EnableSharePackRule = true; buildParameters.VerifyBuildingResult = true; buildParameters.FileNameStyle = fileNameStyle; buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuildinFileCopyParams = buildinFileCopyParams; buildParameters.CompressOption = compressOption; buildParameters.ClearBuildCacheFiles = clearBuildCache; buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.BuiltinShadersBundleName = builtinShaderBundleName; buildParameters.EncryptionServices = CreateEncryptionInstance(); ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); base.ExecuteBuild(); } /// /// 内置着色器资源包名称 /// 注意:和自动收集的着色器资源包名保持一致! /// private string GetBuiltinShaderBundleName() { var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName; var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult(); return packRuleResult.GetBundleName(dataSetting.packageName, uniqueBundleName); } } }