IEnumerator Transition(string sceneName, TransitionDestination.DestinationTag destinationTag) { SaveManager.Instance.SavePlayerData(); if (SceneManager.GetActiveScene().name != sceneName) { fader = Instantiate(faderPrefab); yield return(fader.GetComponent <Fader>().FadeOut(1.5f)); yield return(SceneManager.LoadSceneAsync(sceneName)); // transitionDestination need to be defined here but not the line before "if". Because after reloading the new scene all varaibles would be disapeared. TransitionDestination transitionDestination = GetTransitionDestination(destinationTag); yield return(Instantiate(playerPrefab, transitionDestination.transform.position, transitionDestination.transform.rotation)); SaveManager.Instance.LoadPlayerData(); yield return(fader.GetComponent <Fader>().FadeIn(1.5f)); Destroy(fader.gameObject); yield break; } else { player = GameManager.Instance.player.gameObject; NavMeshAgent playerAgent = player.GetComponent <NavMeshAgent>(); playerAgent.enabled = false; TransitionDestination transitionDestination = GetTransitionDestination(destinationTag); player.transform.SetPositionAndRotation(transitionDestination.transform.position, transitionDestination.transform.rotation); playerAgent.enabled = true; yield break; } }
IEnumerator LoadLevel(string sceneName) { fader = Instantiate(faderPrefab); yield return(fader.GetComponent <Fader>().FadeOut(1.5f)); yield return(SceneManager.LoadSceneAsync(sceneName)); TransitionDestination entrance = GetTransitionDestination(TransitionDestination.DestinationTag.Enter); yield return(player = Instantiate(playerPrefab, entrance.transform.position, entrance.transform.rotation)); SaveManager.Instance.SavePlayerData(); yield return(fader.GetComponent <Fader>().FadeIn(1.5f)); Destroy(fader.gameObject); yield break; }