public BuildEnvsOptions(BuildEnvsOptions buildOptions) { this.assetBundleManifestPath = buildOptions.assetBundleManifestPath; this.locationPathName = buildOptions.locationPathName; this.options = buildOptions.options; this.scenes = buildOptions.scenes; this.target = buildOptions.target; this.targetGroup = buildOptions.targetGroup; }
private static int BuildPlayer(BuildEnvsOptions buildOptions, bool revealInFinder = false) { BuildPipelineCommonTools.FileUtils.CheckDir(Path.GetDirectoryName(buildOptions.locationPathName)); #if UNITY_2018_1_OR_NEWER UnityEditor.Build.Reporting.BuildReport report = BuildPipeline.BuildPlayer(buildOptions.GetBuildPlayerOptions()); UnityEditor.Build.Reporting.BuildSummary summary = report.summary; string errorMessage = string.Join("\n", report.steps.SelectMany(s => s.messages).Where(m => m.type == LogType.Error).Select(m => m.content).ToArray()); bool buildSucceeded = (summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded); #else string errorMessage = BuildPipeline.BuildPlayer(buildOptions.scenes, buildOptions.locationPathName, buildOptions.target, buildOptions.options); bool buildSucceeded = !string.IsNullOrEmpty(errorMessage); #endif UnityEngine.Debug.ClearDeveloperConsole(); BuildPipelineExecutor.DefaultBuildEnvsOptions.DeletePackagingCacheFolders(); if (buildSucceeded) { if (revealInFinder) { EditorUtility.RevealInFinder(buildOptions.locationPathName); } #if UNITY_2018_1_OR_NEWER Debug.Log("Build completed successfully for {0}: {1} mb and took {2} seconds with {3} error(s). Location: {4}", summary.platform.ToString(), (summary.totalSize / 1024 / 1024).ToString("N2"), summary.totalTime.Seconds, summary.totalErrors, summary.outputPath ); #else Debug.Log(string.Format("Build completed successfully for {0} to {1}", buildPlayerOptions.target, buildPlayerOptions.locationPathName)); #endif return(0); } else { Debug.LogError("Build failed with errors \n" + errorMessage); //throw new BuildFailedException("Build failed with errors \n" + errorMessage); return(1); } }
private static void PreBuild(BuildEnvsOptions buildOptions) { if (UnityEditor.BuildPipeline.isBuildingPlayer) { return; } PlayerSettingsSnapshot.ApplySnapshotIfFailed(() => { PlayerSettingsSnapshot.TakeSnapshot(); BuildPipelineExecutor.DefaultBuildEnvsOptions.ApplySettings(); bool valid = BuildPipelineValidator.IsValid(buildOptions.targetGroup); if (!valid) { //Debug.LogError("Build failure with errors"); throw new BuildFailedException("Build failure with errors"); } int code = BuildPlayer(buildOptions, false); if (CommandLineArgs.InBatchMode()) { EditorApplication.Exit(code); } }); }