using UnityEngine; using UnityEngine.SceneManagement; public class SceneTracker : MonoBehaviour { public static SceneTracker Instance; public string previousScene; private void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else if (Instance != this) { Destroy(gameObject); } } [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void InitializeTracker() { if (Instance == null) { GameObject prefab = Resources.Load("SceneTracker"); if (prefab != null) { GameObject tracker = Instantiate(prefab); tracker.name = "SceneTracker"; } else { Debug.LogError("SceneTracker prefab not found in Resources folder!"); } } } public void LoadSceneAndTrack(string sceneName) { previousScene = SceneManager.GetActiveScene().name; SceneManager.LoadScene(sceneName); } public void LoadPreviousScene() { if (!string.IsNullOrEmpty(previousScene)) { SceneManager.LoadScene(previousScene); } else { Debug.LogWarning("No previous scene to go back to."); } } }