using System.IO; using System.Linq; using UnityEditor; using UnityEditor.Build.Reporting; using UnityEngine; namespace Vanguard.Editor { /// /// Сборка Windows standalone. В GUI — меню Vanguard, из CI — /// -executeMethod Vanguard.Editor.StandaloneBuild.BuildWindowsCli. /// public static class StandaloneBuild { [MenuItem("Vanguard/Build Windows Standalone")] public static void BuildWindows() { Build(cli: false); } public static void BuildWindowsCli() { Build(cli: true); } private static void Build(bool cli) { var scenes = EditorBuildSettings.scenes .Where(scene => scene.enabled) .Select(scene => scene.path) .ToArray(); if (scenes.Length == 0) { Debug.LogError("No enabled scenes in Build Settings."); if (cli) EditorApplication.Exit(1); return; } var output = Path.GetFullPath( Path.Combine(Application.dataPath, "../Builds/Windows/VanguardReMaster.exe")); Directory.CreateDirectory(Path.GetDirectoryName(output) ?? "Builds/Windows"); var report = BuildPipeline.BuildPlayer(new BuildPlayerOptions { scenes = scenes, locationPathName = output, target = BuildTarget.StandaloneWindows64, options = BuildOptions.None, }); var summary = report.summary; Debug.Log( "WINDOWS_BUILD result=" + summary.result + " size=" + summary.totalSize + " errors=" + summary.totalErrors + " output=" + output); if (summary.result != BuildResult.Succeeded) { Debug.LogError("Windows build failed: " + summary.result); if (cli) EditorApplication.Exit(1); return; } if (cli) EditorApplication.Exit(0); } } }