private void Awake()
 {
     if (instance != null)
     {
         Logger.log?.Warn($"Instance of {this.GetType().Name} already exists, destroying.");
         GameObject.DestroyImmediate(this);
         return;
     }
     GameObject.DontDestroyOnLoad(this);
     instance = this;
     Logger.log?.Debug($"{name}: Awake()");
 }
 private void OnDestroy()
 {
     Logger.log?.Debug($"{name}: OnDestroy()");
     UnityEngine.SceneManagement.SceneManager.activeSceneChanged -= OnActiveSceneChanged;
     instance = null;
 }