72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
using System.IO;
|
||
using System.Linq;
|
||
using UnityEditor;
|
||
using UnityEditor.Build.Reporting;
|
||
using UnityEngine;
|
||
|
||
namespace Vanguard.Editor
|
||
{
|
||
/// <summary>
|
||
/// Сборка Windows standalone. В GUI — меню Vanguard, из CI —
|
||
/// -executeMethod Vanguard.Editor.StandaloneBuild.BuildWindowsCli.
|
||
/// </summary>
|
||
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);
|
||
}
|
||
}
|
||
}
|