using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Singleton : MonoBehaviour { private Roster unitRoster, reserveUnitRoster; [SerializeField] private Roster startingRoster; [SerializeField] private int startingSceneIndex; public static Singleton Instance; public Roster UnitRoster { get => unitRoster; set => unitRoster = value; } public Roster ReserveUnitRoster { get => reserveUnitRoster; set => reserveUnitRoster = value; } private void Awake() { DontDestroyOnLoad(gameObject); SceneManager.sceneLoaded += OnSceneLoaded; if (Instance == null) { Instance = this; SceneManager.LoadScene(startingSceneIndex); SetPersitentRosters(startingRoster); } else Debug.LogWarning("Singleton duplicate found."); } public void SetPersitentRosters(Roster reserve) { Instance.unitRoster = ScriptableObject.CreateInstance<Roster>(); Instance.reserveUnitRoster = ScriptableObject.CreateInstance<Roster>(); Instance.reserveUnitRoster.Set(reserve); } // called second void OnSceneLoaded(Scene scene, LoadSceneMode mode) { Debug.Log("OnSceneLoaded: " + scene.name); Debug.Log(mode); Debug.Log("Reserve Unit Count: " + reserveUnitRoster.units.Count); Debug.Log("Active Unit Count: " + unitRoster.units.Count); } }