diff --git a/Assets/Editor/BuildScript.cs b/Assets/Editor/BuildScript.cs index 1f754ac..5de88eb 100644 --- a/Assets/Editor/BuildScript.cs +++ b/Assets/Editor/BuildScript.cs @@ -1,18 +1,20 @@ -using System.IO; -using UnityEditor; - public static class BuildScript { + // Helper: use EditorBuildSettings scenes if present, otherwise fall back to your test scene + static string[] ScenesToBuild() => + EditorBuildSettings.scenes.Length > 0 + ? EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray() + : new[] { "Assets/Scenes/TestScene.unity" }; + [MenuItem("Build/Build Windows")] public static void BuildWindows() { - string buildPath = "Builds/Windows"; - if (!Directory.Exists(buildPath)) - Directory.CreateDirectory(buildPath); + var buildPath = "Builds/Windows"; + Directory.CreateDirectory(buildPath); BuildPipeline.BuildPlayer( - new[] { "Assets/Scenes/TestScene.unity" }, // Scenes to build - Path.Combine(buildPath, "TestGame.exe"), // Output path + ScenesToBuild(), + Path.Combine(buildPath, "TestGame.exe"), BuildTarget.StandaloneWindows64, BuildOptions.None ); @@ -21,15 +23,39 @@ public static class BuildScript [MenuItem("Build/Build Mac")] public static void BuildMac() { - string buildPath = "Builds/Mac"; - if (!Directory.Exists(buildPath)) - Directory.CreateDirectory(buildPath); + var buildPath = "Builds/Mac"; + Directory.CreateDirectory(buildPath); BuildPipeline.BuildPlayer( - new[] { "Assets/Scenes/TestScene.unity" }, + ScenesToBuild(), Path.Combine(buildPath, "TestGame.app"), BuildTarget.StandaloneOSX, BuildOptions.None ); } + + // ? New: CI-friendly Android build + public static void BuildAndroidCI() + { + // Make sure we’re on the Android target (does nothing if already there) + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android); + + // Optional: ensure .apk (set to .aab if you want App Bundle) + var buildDir = "Builds/Android"; + Directory.CreateDirectory(buildDir); + var outputPath = Path.Combine(buildDir, "TestGame.apk"); + + // Optional CI toggles (strip development/build-report etc. if you prefer) + var options = BuildOptions.None; + + var report = BuildPipeline.BuildPlayer( + ScenesToBuild(), + outputPath, + BuildTarget.Android, + options + ); + + if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded) + throw new System.Exception("Android build failed: " + report.summary.result); + } }