public void StartSceneLoad(SceneInfoSO scene, bool showLoadingScreen, bool overwrite) { if (overwrite) { PrepareLoadedScenesForUnload(); } LoadScenes(showLoadingScreen, scene); UnloadScenesPreparedForUnload(); }
private void LoadScenes(bool showLoadingScreen, params SceneInfoSO[] scenesToLoad) { activeScene = scenesToLoad[0]; foreach (SceneInfoSO scene in scenesToLoad) { if (!SceneIsLoaded(scene.path)) { sceneLoadOperations.Add(SceneManager.LoadSceneAsync(scene.path, LoadSceneMode.Additive)); } } sceneLoadOperations[0].completed += OnActiveSceneLoadOperationCompleted; if (showLoadingScreen) { loadScreenEventChannel.RaiseRequest(sceneLoadOperations.ToArray()); } sceneLoadOperations.Clear(); }