fix: append to Build Settings instead of overwrite, add Build All Scenes tool
This commit is contained in:
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?");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user