Exemple #1
0
    void Awake()
    {
        print("ScenePersist Awake");
        if (_instance == null)
        {
            _instance = this;
        }
        else if (_instance != this)
        {
            // Most likely cause is a new level has been loaded
            int currentIndex = SceneManager.GetActiveScene().buildIndex;

            print("ScenePersist Awake - index: " + _startingIndex.ToString() + "/" + currentIndex.ToString());
            if (currentIndex == _startingIndex)
            {
                // Keep original instance as the one singleton
                Destroy(gameObject);
                return;
            }
            else
            {
                // Destroy the previous instance and let this one take over
                Destroy(_instance.gameObject);
                _instance = this;
            }
        }
        _startingIndex = SceneManager.GetActiveScene().buildIndex;
        DontDestroyOnLoad(gameObject);
    }
    private static void DestroyScenePersist()
    {
        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        if (scenePersist)
        {
            Destroy(scenePersist.gameObject);
        }
    }
Exemple #3
0
 void OnSceneLoaded(Scene scene, LoadSceneMode mode)
 {
     if (startingSceneIndex != SceneManager.GetActiveScene().buildIndex)
     {
         instance = null;
         SceneManager.sceneLoaded -= OnSceneLoaded;
         Destroy(gameObject);
     }
 }
    void OnTriggerEnter2D(Collider2D collider2D)
    {
        ScenePersist sp = FindObjectOfType <ScenePersist>();

        if (sp != null)
        {
            Destroy(sp.gameObject);
        }
        StartCoroutine(LoadMainMenu());
    }
Exemple #5
0
    private void DeleteScenePersistObject()
    {
        // try to find ScenePSerist Game Object if found delete it and let the new
        // level create another object if required
        ScenePersist scenePersistObject = FindObjectOfType <ScenePersist>();

        if (scenePersistObject)
        {
            Destroy(scenePersistObject.gameObject);
        }
    }
Exemple #6
0
    public void ResetGameSesionAndLoadMenu()
    {
        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        if (scenePersist != null)
        {
            scenePersist.DestroyPersist();
        }
        SceneManager.LoadScene(0);
        Destroy(gameObject);
    }
    void OnTriggerEnter2D(Collider2D collider2D)             // Rick writes other instead. Maybe he doesn't care what Collider2D is called.
    {
        ScenePersist sp = FindObjectOfType <ScenePersist>(); // Nina code for solving a bug where data isn't persisting due to the ScenePersist not being destroyed.

        if (sp != null)
        {
            Destroy(sp.gameObject);
        }
        // start coroutine and name the IEnumerator
        StartCoroutine(LoadNextLevel());
    }
Exemple #8
0
    IEnumerator LoadNextLevel()
    {
        Time.timeScale = LevelExitSlowMoFactor;
        yield return(new WaitForSeconds(levelLoadDelay));

        Time.timeScale = 1f;

        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        Destroy(scenePersist);
        SceneManager.LoadScene(currentSceneIndex + 1);
    }
 private void Awake()
 {
     if (scenePersist != null && scenePersist != this)
     {
         Destroy(gameObject);
     }
     else
     {
         DontDestroyOnLoad(gameObject);
         scenePersist = this;
     }
 }
Exemple #10
0
    // Start is called before the first frame update
    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }

        DontDestroyOnLoad(gameObject);
    }
    private void ResetGameSession()
    {
        ScenePersist sp = FindObjectOfType <ScenePersist>();

        if (sp != null)
        {
            sp.gameObject.SetActive(false);
            Destroy(sp.gameObject);
        }

        Destroy(gameObject);
        SceneManager.LoadScene(0);
    }
Exemple #12
0
    private void DestroyCurrentScenePersist()
    {
        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        if (scenePersist == null)
        {
            Debug.LogWarning("ScenePersist cannot be found and cannot be destroyed.");
            return;
        }

        scenePersist.gameObject.SetActive(false);
        Destroy(scenePersist.gameObject);
    }
Exemple #13
0
 void Start()
 {
     if (!instance)
     {
         instance = this;
         SceneManager.sceneLoaded += OnSceneLoaded;
         startingSceneIndex        = SceneManager.GetActiveScene().buildIndex;
         DontDestroyOnLoad(gameObject);
     }
     else if (instance != this)
     {
         Destroy(gameObject);
     }
 }
Exemple #14
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
         SceneManager.sceneLoaded += OnSceneLoaded;
         startIndex = SceneManager.GetActiveScene().buildIndex;
         DontDestroyOnLoad(this.gameObject);
     }
     else if (instance != this)
     {
         Destroy(this.gameObject);
     }
 }
Exemple #15
0
    /*Llamado del menu de pause, en el cual el time scale es igual a 0,
     * por tanto debe restaurarse el time scale a 1 y destruir el scene persist
     * al igual que cuando se sale por un level exit*/
    public void LoadMainMenu()
    {
        if (Time.timeScale == 0)
        {
            Time.timeScale = 1;
        }
        FindObjectOfType <GameSesion>().ResetGameSesionAndLoadMenu();
        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        if (scenePersist != null)
        {
            scenePersist.DestroyPersist();
        }
    }
Exemple #16
0
    IEnumerator LoadNextLevel()
    {
        Time.timeScale = levelExitSlowMotion;
        yield return(new WaitForSecondsRealtime(LevelLoadDelay));

        Time.timeScale = 1f;

        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        Destroy(scenePersist);

        var currentSceneIndex = SceneManager.GetActiveScene().buildIndex;

        SceneManager.LoadScene(currentSceneIndex + 1);
    }
Exemple #17
0
    IEnumerator LoadNextScene()
    {
        yield return(new WaitForSeconds(levelLoadDelay));

        ScenePersist sp = FindObjectOfType <ScenePersist>();

        if (sp != null)
        {
            sp.gameObject.SetActive(false);
            Destroy(sp.gameObject);
        }

        var currentSceneIndex = SceneManager.GetActiveScene().buildIndex;

        SceneManager.LoadScene(currentSceneIndex + 1);
    }
Exemple #18
0
    // Desactivar el sonido background(MusicPlayer)
    private IEnumerator StartLoadNextScene()
    {
        musicPlayer.SetActive(false);
        myAudioSource.PlayOneShot(loadLevelClip, 1);
        yield return(new WaitForSeconds(0.5f));

        FindObjectOfType <GameSesion>().ResetTortchInSceneAndScore();
        ScenePersist scenePersist = FindObjectOfType <ScenePersist>();

        if (scenePersist != null)
        {
            scenePersist.DestroyPersist();
        }
        int currentScene = SceneManager.GetActiveScene().buildIndex;

        SceneManager.LoadScene(currentScene + 1);
    }
Exemple #19
0
 public void LoadSceneNow(int sceneIndex)
 {
     if (sceneIndex == 0)
     {
         GameSession gs = FindObjectOfType <GameSession>();
         if (gs)
         {
             Destroy(gs);
         }
     }
     if (sceneIndex > GetCurrentActiveScene())
     {
         ScenePersist sp = FindObjectOfType <ScenePersist>();
         if (sp)
         {
             Destroy(sp.gameObject);
         }
     }
     SceneManager.LoadScene(sceneIndex);
     MusicPlayer.instance.PlayMusic(sceneIndex);
 }
Exemple #20
0
    // Deletes new instances only if they are created in the same scene
    // New scene's instance will be kept alive and the old scene's instance destroyed
    void CheckForNewInstance()
    {
        this.startingSceneIndex = SceneManager.GetActiveScene().buildIndex;

        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            if (instance.startingSceneIndex == this.startingSceneIndex)
            {
                // Destroy new instance if the scene did not change
                Destroy(gameObject);
            }
            else
            { // Destroy old instance if the scene did change
                Destroy(instance.gameObject);
                instance = this;
                DontDestroyOnLoad(this.gameObject);
            }
        }
    }