private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set."); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); PlayerController playerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>(); playerController.enabled = false; yield return(fader.FadeOut(fadeOutTime)); savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); PlayerController newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>(); newPlayerController.enabled = false; savingWrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); savingWrapper.Save(); yield return(new WaitForSeconds(fadeWaitTime)); fader.FadeIn(fadeInTime); newPlayerController.enabled = true; Destroy(gameObject); }
private IEnumerator Transition() { Fader fader = FindObjectOfType <Fader>(); DontDestroyOnLoad(gameObject); yield return(fader.FadeOut(fadeOutTime)); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set"); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); yield return(fader.FadeOut(fadeOutTime)); savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); savingWrapper.Load(); Portal otherPortal = GetOtherPortal(); if (otherPortal != null) { UpdatePlayer(otherPortal); } else { print("Could not find another portal"); otherPortal = this; } savingWrapper.Save(); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set."); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); // Fade out yield return(StartCoroutine(fader.FadeOut(fadeOutTime))); // Save current SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); wrapper.Save(); // Load new Scene yield return(SceneManager.LoadSceneAsync(sceneToLoad)); // Load current level wrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); wrapper.Save(); // Wait for a few seconds // load? yield return(new WaitForSeconds(fadeWaitTime)); // Fade In yield return(StartCoroutine(fader.FadeIn(fadeInTime))); Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set."); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeOut(fadeOutTime)); // save current level SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); wrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); // a solution designed by Will Norton to solve // an error regarding a MissingReferenceException for SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); // load current level wrapper.Load(); // move the player Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); wrapper.Save(); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set"); yield break; // rather than return null for IEnum } DontDestroyOnLoad(gameObject); // keeps portal gameObject, assuming portal is at root of scene Fader fader = FindObjectOfType <Fader>(); // Save current level SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); yield return(fader.FadeOut(fadeOutTime)); //yields take turns within the method each frame //yield and call again when scene is finished loading savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); //allows us to transfer info into new scene // Load current level savingWrapper.Load(); //after scene load.. Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); savingWrapper.Save(); // save again after loading the players location so that we have correct state when returning to game, player should be at the protal spawn point yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); // this script is attached to portal, so will destroy portal }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set!"); yield break; } DontDestroyOnLoad(this.gameObject); //Fade out Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeOut(FadeOutTime)); //Save current level SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); savingWrapper.Save(); //Load new scene yield return(SceneManager.LoadSceneAsync(sceneToLoad)); //Load current level savingWrapper.Load(); //Set player position Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); savingWrapper.Save(); //Fade In yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(FadeInTime)); Destroy(this.gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load is not set!"); yield break; } DontDestroyOnLoad(gameObject); //star fade out Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeOut(fadeOutTime)); //save current level (when exiting level through portal) SavingWrapper save_wrap = FindObjectOfType <SavingWrapper>(); save_wrap.Save(); //load async next scene yield return(SceneManager.LoadSceneAsync(sceneToLoad)); //load current level save save_wrap.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); //resave the checkpoint after new scene was loaded save_wrap.Save(); //wait betwen fade out and fade in yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad == null) { Debug.LogError("Scene does not exist!"); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); GetPlayerControllerComponent(); playerController.enabled = false; yield return(fader.FadeOut(fadeOutTime)); SavingWrapper saveWrap = FindObjectOfType <SavingWrapper>(); saveWrap.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad.name)); GetPlayerControllerComponent(); playerController.enabled = false; saveWrap.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); saveWrap.Save(); yield return(new WaitForSeconds(fadeWaitTime)); fader.FadeIn(fadeInTime); playerController.enabled = true; Destroy(gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("SceneToLoad not initialized"); yield break; } Fader fader = FindObjectOfType <Fader>(); SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); DontDestroyOnLoad(this.gameObject); DisableControl(GameObject.FindWithTag("Player")); yield return(fader.FadeOut(fadeOutTime)); savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); DisableControl(GameObject.FindWithTag("Player")); savingWrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); savingWrapper.Save(); yield return(new WaitForSeconds(waitTime)); EnableControl(GameObject.FindWithTag("Player")); yield return(fader.FadeIn(fadeInTime)); Destroy(this.gameObject); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load is not set"); yield break; } DontDestroyOnLoad(gameObject); // launch Fade out effect Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeOut(fadeOutTime)); // save current level SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); wrapper.Save(); // load the scene yield return(SceneManager.LoadSceneAsync(sceneToLoad)); // Load current level wrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); wrapper.Save(); // launch Fade in effect yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeOutTime)); Destroy(gameObject); }
IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set!"); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); PlayerController player = FindObjectOfType <PlayerController>(); player.enabled = false; yield return(fader.FadeOut(fadeOutTime)); MySavingWrapper wrapper = FindObjectOfType <MySavingWrapper>(); wrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); PlayerController newPlayer = FindObjectOfType <PlayerController>(); newPlayer.enabled = false; wrapper.Load(); SetupLevel(); yield return(new WaitForSeconds(fadeWaitTime)); wrapper.ResetPlayerCamera(); wrapper.Save(); fader.FadeIn(fadeInTime); newPlayer.enabled = true; Destroy(gameObject); }
private IEnumerator Transition() { DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); Savingwrapper wrapper = FindObjectOfType <Savingwrapper>(); PlayerMove playerController = GameObject.FindWithTag("Player").GetComponent <PlayerMove>(); playerController.enabled = false; yield return(fader.FadeOut(fadeoutTime)); wrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); PlayerMove newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerMove>(); newPlayerController.enabled = false; wrapper.Load(); Portal otherportal = GetOtherPortal(); UpdatePlayer(otherportal); wrapper.Save(); yield return(new WaitForSeconds(fadewaitTime)); fader.FadeIn(fadeinTime); newPlayerController.enabled = true; Destroy(gameObject); }
private IEnumerator Transition() { DontDestroyOnLoad(gameObject); boxCollider.isTrigger = false; savingManager.LoadingScreen.gameObject.SetActive(true); StartCoroutine(savingManager.GenerateTips()); SwitchPlayerControll(false); yield return(fader.FadeOut(fadeOutTime)); savingManager.Save(); yield return(SceneManager.UnloadSceneAsync(currentSceneIndex)); yield return(SceneManager.LoadSceneAsync(sceneToLoadIndex, LoadSceneMode.Additive)); SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(sceneToLoadIndex)); SwitchPlayerControll(false); yield return(savingManager.Load()); Portal otherPortal = GetOtherPortal(); UpdatePlayerTransform(otherPortal); savingManager.Save(); yield return(new WaitForSeconds(waitTimeBetweenScenes)); yield return(fader.FadeIn(fadeInTime)); savingManager.LoadingScreen.gameObject.SetActive(false); SwitchPlayerControll(true); Destroy(gameObject); }
private IEnumerator Transition() { DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); //SceneManager.LoadScene(sceneToLoad); SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); yield return(fader.FadeOut(fadeOutTime)); //save current level //SavingWrapper wrapper = FindObjectOfType<SavingWrapper>(); wrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); //load current level wrapper.Load(); //yield return SceneManager.LoadSceneAsync(sceneToLoad); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); wrapper.Save(); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator Transition() { if (portalSceneIndex < 0) { Debug.LogError("Scene to load is not set"); yield break; } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeOut(fadeOutTime)); SavingWrapper wrapper = FindObjectOfType <SavingWrapper>(); wrapper.Save(); yield return(SceneManager.LoadSceneAsync(portalSceneIndex)); wrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); wrapper.Save(); Debug.Log("waiting"); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
public IEnumerator Transition(ScenePortalIdentifier destination) { if (sceneToLoad == -1) { sceneToLoad = GetNextScene(); } DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); yield return(fader.FadeOut(fadeOutTime)); savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); savingWrapper.Load(); UpdatePlayer(GetOtherPortal(destination)); savingWrapper.Save(); yield return(new WaitForSeconds(fadeWaitTime)); yield return(fader.FadeIn(fadeInTime)); Destroy(gameObject); }
private IEnumerator LoadScene(string sceneName) { fader.gameObject.SetActive(true); yield return(fader.FadeOut(2.5f)); SceneManager.SetActiveScene(mainScene); if (currentScene != mainScene) { yield return(SceneManager.UnloadSceneAsync(currentScene)); } if (!SceneManager.GetSceneByName(sceneName).isLoaded) { yield return(SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive)); } onLevelLoaded?.Invoke(); currentScene = SceneManager.GetSceneByName(sceneName); SceneManager.SetActiveScene(currentScene); yield return(fader.FadeIn(1.5f)); fader.gameObject.SetActive(false); }
IEnumerator FadeIn(float time) { Fader fader = FindObjectOfType <Fader>(); yield return(fader.FadeIn(fadeInTime)); }
private IEnumerator Transition() { if (sceneToLoad < 0) { Debug.LogError("Scene to load not set."); yield break; } // 현재 오브젝트를 다른씬 로드할때 남겨놓음. destroy할 경우 밑에 코드들이 전부 날라감. DontDestroyOnLoad(gameObject); Fader fader = FindObjectOfType <Fader>(); SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>(); var playerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>(); playerController.enabled = false; // Remove control if (fader != null) { yield return(fader.FadeOut(m_FadeOutTime)); } savingWrapper.Save(); yield return(SceneManager.LoadSceneAsync(sceneToLoad)); // Remove control form loaded player // 씬을 넘어왔으니 플레이어를 다시 찾아야한다. var newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>(); newPlayerController.enabled = false; savingWrapper.Load(); Portal otherPortal = GetOtherPortal(); UpdatePlayer(otherPortal); savingWrapper.Save(); // 2번연속 충돌감지 방지하기위해 꺼놓은 충돌감지를 새로운 scene이로드 됬을때 다시 켜준다. GetComponent <Collider>().enabled = true; yield return(new WaitForSeconds(m_FadeWaitTime)); // if (fader != null) // yield return fader.FadeIn(m_fadeInTime); // Fader에서 Coroutine이 아닌 IEnumerator를 return 할때 사용했음 // yield return이 끝나기전까지 newPlayerController.enabled = true;를 하지못하기때문에 // Fade하는동안 Player는 움직이지 못함. // Fade가 끝나지 않아도 플레이어를 움직이게 하기위해 // FadeIn은 Coroutine 자체를 return 하게해서 다른 곳에서 Coroutine을 실행 할 수 있게한다. // FadeIn, Fadeout을 void로 하지않은 이유는 Coroutine을 return 하면 yield return도 사용가능하기 때문. if (fader != null) { fader.FadeIn(m_FadeInTime); } // Restore control // 해당 포털이 Destroy하기전에 빠르게 포탈을 계속 이동할경우 // Player위치렉이 걸린다. // 로딩이 다 끝나고 안정될때까지 Player를 못움직이게해야함. newPlayerController.enabled = true; Destroy(gameObject); }