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

70 lines
3.6 KiB
C#
Raw Normal View History

2025-03-31 11:16:52 +08:00
using System;
using UnityEditor;
2025-05-07 10:50:44 +08:00
using UnityEngine;
2025-03-31 11:16:52 +08:00
using YooAsset;
using YooAsset.Editor;
namespace Stary.Evo.Editor
{
[Serializable]
public class ScriptableBuildPipelineViewer:AbstractBuildPipelineViewer
{
2025-10-24 11:11:59 +08:00
public ScriptableBuildPipelineViewer(string packageName, string selectedBuildPipelines, string packageVersion) :
base(packageName, selectedBuildPipelines, packageVersion)
2025-03-31 11:16:52 +08:00
{
2025-04-11 09:56:06 +08:00
//isSimulate = false;
2025-03-31 11:16:52 +08:00
}
public override void ExecuteBuild()
{
2025-10-24 11:11:59 +08:00
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines);
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines);
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines);
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(packageName, selectedBuildPipelines);
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines);
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines);
2025-03-31 11:16:52 +08:00
var builtinShaderBundleName = GetBuiltinShaderBundleName();
ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
2025-10-24 11:11:59 +08:00
buildParameters.BuildPipeline = selectedBuildPipelines;
2025-03-31 11:16:52 +08:00
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
2025-10-24 11:11:59 +08:00
buildParameters.PackageName = packageName;
buildParameters.PackageVersion = packageVersion;
2025-03-31 11:16:52 +08:00
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();
2025-05-23 18:26:47 +08:00
2025-03-31 11:16:52 +08:00
ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success)
2025-04-11 09:56:06 +08:00
{
2025-05-07 10:50:44 +08:00
Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】");
// EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
2025-04-11 09:56:06 +08:00
base.ExecuteBuild();
}
2025-05-23 18:26:47 +08:00
2025-03-31 11:16:52 +08:00
}
/// <summary>
/// 内置着色器资源包名称
/// 注意:和自动收集的着色器资源包名保持一致!
/// </summary>
private string GetBuiltinShaderBundleName()
{
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
2025-10-24 11:11:59 +08:00
return packRuleResult.GetBundleName(packageName, uniqueBundleName);
2025-03-31 11:16:52 +08:00
}
}
}