private IEnumerator Fade(FadeDirection fadeDirection) { float alpha = (fadeDirection == FadeDirection.Out) ? 1 : 0; float fadeEndValue = (fadeDirection == FadeDirection.Out) ? 0 : 1; if (fadeDirection == FadeDirection.Out) { while (alpha >= fadeEndValue) { SetColorImage(ref alpha, fadeDirection); yield return(null); } fadeOutUIImage.enabled = false; OnSceneLoadComplete?.Invoke(); } else { OnSceneLoadStarted?.Invoke(); fadeOutUIImage.enabled = true; while (alpha <= fadeEndValue) { SetColorImage(ref alpha, fadeDirection); yield return(null); } } }
public async Task LoadSceneAsync(string sceneName) { OnBeforeSceneChange.Invoke(_activeSceneLowLevelInfos.Scene); await UnloadActiveSceneAsync(); _activeSceneLowLevelInfos.Reset(); _activeSceneInfos = null; _activeSceneLowLevelInfos.SceneName = sceneName; _activeSceneLowLevelInfos.IsMenuScene = sceneName.ToLower().Contains("menu"); if (_activeSceneLowLevelInfos.IsMenuScene == false) { OnBeforeGameSceneLoad.Invoke(); } AsyncOperation op = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); while (op.isDone == false) { _activeSceneLowLevelInfos.LoadProgress = op.progress * 0.7f; await Task.Delay(10); } _activeSceneLowLevelInfos.LoadProgress = 0.7f; Scene scene = SceneManager.GetSceneByName(sceneName); _activeSceneLowLevelInfos.SceneIndex = scene.buildIndex; _activeSceneLowLevelInfos.Scene = scene; SceneManager.SetActiveScene(scene); FindSceneInfos(ref scene); if (_activeSceneLowLevelInfos.IsMenuScene == false) { OnAfterGameSceneLoad.Invoke(_activeSceneLowLevelInfos.Scene); } OnAfterSceneChange.Invoke(_activeSceneLowLevelInfos.Scene); if (_activeSceneInfos != null) { while (_activeSceneInfos.LoadingComplete == false) { await Task.Delay(10); } } OnSceneLoadComplete.Invoke(_activeSceneLowLevelInfos.Scene); }
internal void DoComplete(Scene scene) { state = SceneLoaderDataState.Finished; handler.IsDone = true; handler.TargetScene = scene; if (!isActiveWhenLoaded && scene.IsValid()) { GameObject[] objs = scene.GetRootGameObjects(); foreach (var obj in objs) { obj.SetActive(false); } } progressCallback?.Invoke(address, 1.0f, userData); completeCallback?.Invoke(address, scene, userData); }
private async void HandleFindAndLoadActiveGameScene() { if (_activeSceneLowLevelInfos.SceneIndex == -1) { Scene activeScene = SceneManager.GetActiveScene(); bool isGameSceneActive = PinouConstants.IS_GAME_SCENE(activeScene.name); if (isGameSceneActive == false) { for (int i = 0; i < SceneManager.sceneCount; i++) { Scene scene = SceneManager.GetSceneAt(i); if (PinouConstants.IS_GAME_SCENE(scene.name)) { SceneManager.SetActiveScene(scene); isGameSceneActive = true; } } } if (isGameSceneActive == true) { _activeSceneLowLevelInfos.SceneLoaded = true; _activeSceneLowLevelInfos.IsMenuScene = activeScene.name.ToLower().Contains("menu"); _activeSceneLowLevelInfos.SceneIndex = activeScene.buildIndex; _activeSceneLowLevelInfos.LoadProgress = 1f; _activeSceneLowLevelInfos.SceneName = activeScene.name; _activeSceneLowLevelInfos.Scene = activeScene; FindSceneInfos(ref activeScene); await Task.Delay(1); OnSceneLoadComplete.Invoke(_activeSceneLowLevelInfos.Scene); } else { Debug.Log("No Game Scene found."); } } }
IEnumerator Start() { foreach (var obj in initializebles) { var initializable = (obj as IInitializable); initializable?.Init(); } foreach (var obj in initializebles) { var initializable = (obj as IInitializable); if (initializable == null) { continue; } yield return(new WaitUntil(() => initializable.Initialized)); } OnSceneLoadComplete?.Invoke(); yield return(null); }
private void OnEndTransition() => OnSceneLoadComplete?.Invoke();