/// <summary>
 /// Only ever called once, mainly used to initialize variables.
 /// </summary>
 private void Awake()
 {
     // For this particular MonoBehaviour, we only want one instance to exist at any time, so store a reference to it in a static property
     //   and destroy any that are created while one already exists.
     if (instance != null)
     {
         Logger.log?.Warn($"Instance of {this.GetType().Name} already exists, destroying.");
         GameObject.DestroyImmediate(this);
         return;
     }
     GameObject.DontDestroyOnLoad(this);             // Don't destroy this object on scene changes
     instance = this;
     Logger.log?.Debug($"{name}: Awake()");
     indexNum        = 0;
     spectating      = false;
     scoreMultiplier = 1.0f;
     readyToSpectate = false;
     once            = false;
 }
 /// <summary>
 /// Called when the script is being destroyed.
 /// </summary>
 private void OnDestroy()
 {
     Logger.log?.Debug($"{name}: OnDestroy()");
     instance = null;
 }