fix: append to Build Settings instead of overwrite, add Build All Scenes tool

This commit is contained in:
Computer committed 2026-03-19 07:34:01 +00:00
1 parent 9d2a043d3f
commit d8e355de2b
8 files changed
+71 -8

No files matched your search

@@ -0,0 +1,32 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
public static class BuildAllScenes
{
[MenuItem("Tools/Build All Scenes")]
public static void BuildAll()
{
// Clear build settings first
EditorBuildSettings.scenes = new EditorBuildSettingsScene[0];
// Create all scenes in order (MainMenu must be index 0)
CreateMainMenuScene.Create();
CreateCollectionScene.Create();
CreateDeckBuilderScene.Create();
CreateSimulatorScene.Create();
CreateScannerScene.Create();
CreateTrainingScene.Create();
// Log the final build settings
Debug.Log($"[BuildAllScenes] Registered {EditorBuildSettings.scenes.Length} scenes in Build Settings:");
foreach (var s in EditorBuildSettings.scenes)
Debug.Log($" {s.path} (enabled={s.enabled})");
// Reopen MainMenu as the active scene
EditorSceneManager.OpenScene("Assets/Scenes/MainMenu.unity");
Debug.Log("[BuildAllScenes] Done! MainMenu scene is now active.");
}
}
#endif
@@ -5,6 +5,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateCollectionScene
{
@@ -205,7 +206,10 @@ public static class CreateCollectionScene
AssetDatabase.CreateFolder("Assets", "Scenes");
string path = "Assets/Scenes/Collection.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettings.scenes = new EditorBuildSettingsScene[] { new EditorBuildSettingsScene(path, true) };
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
Debug.Log("[CreateCollectionScene] Collection scene created and saved to " + path);
}
@@ -5,6 +5,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateDeckBuilderScene
{
@@ -169,7 +170,10 @@ public static class CreateDeckBuilderScene
AssetDatabase.CreateFolder("Assets", "Scenes");
string path = "Assets/Scenes/DeckBuilder.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettings.scenes = new EditorBuildSettingsScene[] { new EditorBuildSettingsScene(path, true) };
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
Debug.Log("[CreateDeckBuilderScene] DeckBuilder scene created and saved to " + path);
}
@@ -6,6 +6,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateMainMenuScene
{
@@ -121,8 +122,10 @@ public static class CreateMainMenuScene
// -- Save --
string path = "Assets/Scenes/MainMenu.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettingsScene[] buildScenes = { new EditorBuildSettingsScene(path, true) };
EditorBuildSettings.scenes = buildScenes;
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
Debug.Log("MainMenu scene created and saved to " + path);
EditorUtility.DisplayDialog("Done", "MainMenu scene created!\n\nHit Play to test.\nMake sure your FastAPI backend is running on port 8080.", "OK");
@@ -5,6 +5,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateScannerScene
{
@@ -92,7 +93,10 @@ public static class CreateScannerScene
AssetDatabase.CreateFolder("Assets", "Scenes");
string path = "Assets/Scenes/Scanner.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettings.scenes = new EditorBuildSettingsScene[] { new EditorBuildSettingsScene(path, true) };
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
Debug.Log("[CreateScannerScene] Scanner scene created and saved to " + path);
}
@@ -5,6 +5,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateSimulatorScene
{
@@ -85,7 +86,10 @@ public static class CreateSimulatorScene
AssetDatabase.CreateFolder("Assets", "Scenes");
string path = "Assets/Scenes/Simulator.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettings.scenes = new EditorBuildSettingsScene[] { new EditorBuildSettingsScene(path, true) };
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
Debug.Log("[CreateSimulatorScene] Simulator scene created and saved to " + path);
}
@@ -5,6 +5,7 @@ using UnityEditor;
using UnityEditor.SceneManagement;
using TMPro;
using System.Reflection;
using System.Linq;
public static class CreateTrainingScene
{
@@ -170,7 +171,10 @@ public static class CreateTrainingScene
AssetDatabase.CreateFolder("Assets", "Scenes");
string path = "Assets/Scenes/Training.unity";
EditorSceneManager.SaveScene(scene, path);
EditorBuildSettings.scenes = new EditorBuildSettingsScene[] { new EditorBuildSettingsScene(path, true) };
var existing = new System.Collections.Generic.List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
if (!existing.Any(s => s.path == path))
existing.Add(new EditorBuildSettingsScene(path, true));
EditorBuildSettings.scenes = existing.ToArray();
UnityEngine.Debug.Log("[CreateTrainingScene] Training scene created and saved to " + path);
}
@@ -92,7 +92,15 @@ namespace CommanderAILab.UI
private void LoadScene(string sceneName)
{
if (isConnected) SceneManager.LoadScene(sceneName);
if (!isConnected) return;
try
{
SceneManager.LoadScene(sceneName);
}
catch (System.Exception e)
{
Debug.LogError($"Failed to load scene '{sceneName}': {e.Message}. Is it added to Build Settings?");
}
}
}
}