Exemple #1
0
    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;
        }
    }
Exemple #2
0
    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;
    }