My play again button is connected to the LoadGame method. I have Game Session and Level game objects in all of the scenes . My Main Menu → Start button works well (although I had to modify the code and wrote static in order to reset itself). I can’t seem to find the problem. I think my gameObject isn’t getting destroyed correctly.
//Level
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Level : MonoBehaviour
{
[SerializeField] float delayInSeconds = 2f;
GameSession gameSession;
public void LoadStartMenu()
{
SceneManager.LoadScene(0);
}
public void LoadGame()
{
SceneManager.LoadScene(1);
FindObjectOfType<GameSession>().ResetGame();
Debug.Log("Game Session Reset");
Debug.Log(FindObjectOfType<GameSession>().GetScore());
}
public void LoadGameOver()
{
StartCoroutine(WaitAndLoad());
}
IEnumerator WaitAndLoad()
{
yield return new WaitForSeconds(delayInSeconds);
SceneManager.LoadScene("Over");
}
public void QuitGame()
{
Application.Quit();
}
}
// Game Session
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameSession : MonoBehaviour
{
static int score = 0;
private void Awake()
{
SetUpSingleton();
}
private void SetUpSingleton()
{
int numberGameSessions = FindObjectsOfType<GameSession>().Length;
if (numberGameSessions > 1)
{
Destroy(gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
}
}
public int GetScore()
{
return score;
}
public void AddToScore(int scoreValue)
{
score += scoreValue;
}
public void ResetGame()
{
Destroy(gameObject.gameObject);
}
}