| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using UnityEditor;
- using UnityEngine;
- namespace YooAsset.Editor
- {
- public static class AssetBundleSimulateBuilder
- {
- /// <summary>
- /// 模拟构建
- /// </summary>
- public static string SimulateBuild(string buildPipelineName, string packageName)
- {
- if (buildPipelineName == EBuildPipeline.BuiltinBuildPipeline.ToString())
- {
- BuiltinBuildParameters buildParameters = new BuiltinBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = "Simulate";
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
- BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline();
- var buildResult = pipeline.Run(buildParameters, false);
- if (buildResult.Success)
- {
- string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
- string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}";
- return manifestFilePath;
- }
- else
- {
- return null;
- }
- }
- else if (buildPipelineName == EBuildPipeline.ScriptableBuildPipeline.ToString())
- {
- ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = "Simulate";
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
- ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
- var buildResult = pipeline.Run(buildParameters, true);
- if (buildResult.Success)
- {
- string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
- string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}";
- return manifestFilePath;
- }
- else
- {
- return null;
- }
- }
- else if (buildPipelineName == EBuildPipeline.RawFileBuildPipeline.ToString())
- {
- RawFileBuildParameters buildParameters = new RawFileBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = buildPipelineName;
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.BuildMode = EBuildMode.SimulateBuild;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = "Simulate";
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
- RawFileBuildPipeline pipeline = new RawFileBuildPipeline();
- var buildResult = pipeline.Run(buildParameters, true);
- if (buildResult.Success)
- {
- string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
- string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}";
- return manifestFilePath;
- }
- else
- {
- return null;
- }
- }
- else
- {
- throw new System.NotImplementedException(buildPipelineName);
- }
- }
- }
- }
|