Big problem with a small singleton

In my initial scene (Scene_1) I have a gameObject called ApplicationBase, which I made into a singleton like so:

public class ApplicationBase_scr : MonoBehaviour
{
  public static ApplicationBase_scr instance = null;
  public GameObject[] players;

  private void Awake()
  {
    if (instance == null)
      instance = this;
    else if (instance != this)
    {
      Destroy(gameObject);
    }
    DontDestroyOnLoad(gameObject);
  }

When I enter Scene_2, everything is fine, but when I RETURN to Scene_1 from Scene_2 there are suddenly two pieces of Singleton for a short time - the initial singleton (which I “carried” from Scene_1 into Scene_2) gets destroyed and it gets replaced by the new singleton from Scene_1.

What I would like to do is the following: when I’m returning from Scene_1 to Scene_2, I would like to KEEP the singleton I carried initially from Scene_1 to Scene_2 and back to Scene_1. And need the new Singleton in Scene_1 destroyed.

I sloved this problem myself with the help of Unity’s official and awesome 2D Rouglike tutorial. I simply created a SingletonLoader_scr class, that instantiates all the singletons I need in runtime.

using UnityEngine;
using System.Collections;

public class SingletonLoader_scr : MonoBehaviour
{
  public GameObject applicationBase;

  void Awake()
  {
    if (ApplicationBase_scr.instance == null)
      Instantiate(applicationBase);
  }
}