Esempio n. 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;
        }
    }
Esempio n. 2
0
    // 协程
    IEnumerator Transition(string sceneName, TransitionDestination.DestinationTag destinationTag)
    {
        player                = GameManager.Instance.playerStats.gameObject;
        playerAgent           = player.GetComponent <NavMeshAgent>();
        playerAgent.isStopped = false;
        player.transform.SetPositionAndRotation(GetDestination(destinationTag).transform.position, GetDestination(destinationTag).transform.rotation);
        playerAgent.isStopped = true;

        yield return(null);
    }
Esempio n. 3
0
    private TransitionDestination GetTransitionDestination(TransitionDestination.DestinationTag destinationTag)
    {
        var entrances = FindObjectsOfType <TransitionDestination>();

        foreach (var entrance in entrances)
        {
            if (entrance.destinationTag == destinationTag)
            {
                return(entrance);
            }
        }
        return(null);
    }
Esempio n. 4
0
 protected TransitionDestination GetDestination(TransitionDestination.DestinationTag destinationTag)
 {
     TransitionDestination[] entrances = FindObjectsOfType <TransitionDestination>();
     for (int i = 0; i < entrances.Length; i++)
     {
         if (entrances[i].destinationTag == destinationTag)
         {
             return(entrances[i]);
         }
     }
     Debug.LogWarning("No entrance was found with the " + destinationTag + ".tag. ");
     return(null);
 }
Esempio n. 5
0
    private TransitionDestination GetDestination(TransitionDestination.DestinationTag destinationTag)
    {
        var entrances = FindObjectsOfType <TransitionDestination>();

        for (int i = 0; i < entrances.Length; i++)
        {
            if (entrances[i].destinationTag == destinationTag)
            {
                return(entrances[i]);
            }
        }

        return(null);
    }
Esempio n. 6
0
        protected IEnumerator Transition(string newSceneName, bool resetInputValues, TransitionDestination.DestinationTag destinationTag, TransitionPoint.TransitionType transitionType = TransitionPoint.TransitionType.DifferentZone)
        {
            m_Transitioning = true;

            yield return(SceneManager.LoadSceneAsync(newSceneName));

            TransitionDestination entrance = GetDestination(destinationTag);

            SetEnteringGameObjectLocation(entrance);
            SetupNewScene(transitionType, entrance);
            if (entrance != null)
            {
                entrance.onReachDestination.Invoke();
            }

            m_Transitioning = false;
        }
Esempio n. 7
0
        void Awake()
        {
            if (Instance != this)
            {
                Destroy(gameObject);
                return;
            }

            DontDestroyOnLoad(gameObject);

            if (initialSceneTransitionDestination != null)
            {
                SetEnteringGameObjectLocation(initialSceneTransitionDestination);
                initialSceneTransitionDestination.onReachDestination.Invoke();
            }
            else
            {
                m_CurrentZoneScene          = SceneManager.GetActiveScene();
                m_ZoneRestartDestinationTag = TransitionDestination.DestinationTag.A;
            }
        }
Esempio n. 8
0
    IEnumerator Transition(string sceneName, TransitionDestination.DestinationTag destinationTag)
    {
        SaveManager.Instance.SavePlayerData();
        InventoryManager.Instance.SaveData();

        if (SceneManager.GetActiveScene().name != sceneName)
        {
            yield return(SceneManager.LoadSceneAsync(sceneName));

            yield return(Instantiate(playerPrefab, GetDestination(destinationTag).transform.position, GetDestination(destinationTag).transform.rotation));

            SaveManager.Instance.LoadPlayerData();
            yield break;
        }
        else
        {
            player      = GameManager.Instance.playerStats.gameObject;
            nav         = player.GetComponent <NavMeshAgent>();
            nav.enabled = false;
            player.transform.SetPositionAndRotation(GetDestination(destinationTag).transform.position, GetDestination(destinationTag).transform.rotation);
            nav.enabled = true;
            yield return(null);
        }
    }
Esempio n. 9
0
 protected void SetZoneStart(TransitionDestination entrance)
 {
     m_CurrentZoneScene          = entrance.gameObject.scene;
     m_ZoneRestartDestinationTag = entrance.destinationTag;
 }