ScriptableBuildPipelineViewer.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #if UNITY_2019_4_OR_NEWER
  2. using System;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Collections.Generic;
  6. using UnityEditor;
  7. using UnityEngine;
  8. using UnityEditor.UIElements;
  9. using UnityEngine.UIElements;
  10. namespace YooAsset.Editor
  11. {
  12. internal class ScriptableBuildPipelineViewer : BuildPipelineViewerBase
  13. {
  14. public ScriptableBuildPipelineViewer(string packageName, BuildTarget buildTarget, VisualElement parent)
  15. : base(packageName, EBuildPipeline.ScriptableBuildPipeline, buildTarget, parent)
  16. {
  17. }
  18. /// <summary>
  19. /// 执行构建
  20. /// </summary>
  21. protected override void ExecuteBuild()
  22. {
  23. var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline);
  24. var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline);
  25. var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline);
  26. var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline);
  27. var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline);
  28. var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline);
  29. var builtinShaderBundleName = GetBuiltinShaderBundleName();
  30. ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
  31. buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
  32. buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
  33. buildParameters.BuildPipeline = BuildPipeline.ToString();
  34. buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
  35. buildParameters.BuildTarget = BuildTarget;
  36. buildParameters.PackageName = PackageName;
  37. buildParameters.PackageVersion = GetPackageVersion();
  38. buildParameters.EnableSharePackRule = true;
  39. buildParameters.VerifyBuildingResult = true;
  40. buildParameters.FileNameStyle = fileNameStyle;
  41. buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
  42. buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
  43. buildParameters.CompressOption = compressOption;
  44. buildParameters.ClearBuildCacheFiles = clearBuildCache;
  45. buildParameters.UseAssetDependencyDB = useAssetDependencyDB;
  46. buildParameters.BuiltinShadersBundleName = builtinShaderBundleName;
  47. buildParameters.EncryptionServices = CreateEncryptionInstance();
  48. ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
  49. var buildResult = pipeline.Run(buildParameters, true);
  50. if (buildResult.Success)
  51. EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
  52. }
  53. /// <summary>
  54. /// 内置着色器资源包名称
  55. /// 注意:和自动收集的着色器资源包名保持一致!
  56. /// </summary>
  57. private string GetBuiltinShaderBundleName()
  58. {
  59. var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
  60. var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
  61. return packRuleResult.GetBundleName(PackageName, uniqueBundleName);
  62. }
  63. }
  64. }
  65. #endif