static void AddScenesToBuildSettings(InitializationScenes instance) { EditorBuildSettingsScene[] buildScenes = EditorBuildSettings.scenes; List <EditorBuildSettingsScene> finalScenes = new List <EditorBuildSettingsScene>(); finalScenes.Add(new EditorBuildSettingsScene(instance.mainInitializationScenePath, true)); for (int i = 0; i < instance.initializationScenePaths.Length; i++) { finalScenes.Add(new EditorBuildSettingsScene(instance.initializationScenePaths[i], true)); } // add all non initialization scenes that were already in the build settings... for (int i = 0; i < buildScenes.Length; i++) { string path = buildScenes[i].path; if (string.IsNullOrEmpty(path)) { continue; } if (path.Contains(InitializationScenes.mainInitializationScene) || path.Contains(InitializationScenes.initializationSceneKey)) { continue; } finalScenes.Add(buildScenes[i]); } EditorBuildSettings.scenes = finalScenes.ToArray(); }
public static void RefreshScenesList() { InitializationScenes instance = InitializationScenes.instance; // dont update when in play mode or if our game settings object is missing if (Application.isPlaying || instance == null) { return; } // update the array of all game settings objects in the project SceneAsset[] allScenesInProject = AssetTools.FindAssetsByType <SceneAsset>(logToConsole: false).ToArray(); SceneAsset mainScene = null; List <SceneAsset> initializationScenes = new List <SceneAsset>(); for (int i = 0; i < allScenesInProject.Length; i++) { if (allScenesInProject[i].name == InitializationScenes.mainInitializationScene) { mainScene = allScenesInProject[i]; continue; } if (allScenesInProject[i].name.Contains(InitializationScenes.initializationSceneKey)) { initializationScenes.Add(allScenesInProject[i]); } } if (mainScene == null) { Debug.LogError("No Main Initialization scene found named: " + InitializationScenes.mainInitializationScene); } else { instance.mainInitializationScenePath = AssetDatabase.GetAssetPath(mainScene); } int c = initializationScenes.Count; instance.initializationSceneNames = new string[c]; instance.initializationScenePaths = new string[c]; for (int i = 0; i < c; i++) { string path = AssetDatabase.GetAssetPath(initializationScenes[i]); instance.initializationScenePaths[i] = path; instance.initializationSceneNames[i] = Path.GetFileNameWithoutExtension(path); } AddScenesToBuildSettings(instance); EditorUtility.SetDirty(instance); }
public static void QuitToMainMenu() { SaveLoad.ClearGameSaveState(); InitializationScenes.LoadInitializationScene(); }