OnSceneWasLoaded and Object.DontDestroyOnLoad

Unfortunately my English is not perfect. I hope to make myself understood.

I have problems with Object.DontDestroyOnLoad when I try to reload a scene.
The object in question was forcibly destroyed by Destroy (object).
I try to explain step by step:

  1. I have a Object.DontDestroyOnLoad object.
  2. At scene reloading I tell him to destroy it.
  3. In recharged scene I am told me that there is more that object because it has been destroyed.

But why go to look for the same object as before and not the new reloaded object?
Nothing in this script is static.

The code for the control is very simple.

	void Awake(){

		SceneManager.sceneLoaded += OnSceneWasLoaded;

	void OnSceneWasLoaded(Scene previousScene, LoadSceneMode loadSceneMode )

It does not find the script… because he says that was destroyed.
To reload the scene using a simple button that destroys everything, including the DontDestroyOnLoad objects.

//On "restart level" button click
public void RestartScene () {

	//Destroy all gameObjects also DoNotDestroy
	foreach(GameObject gobj in FindObjectsOfType<GameObject>())

As if “OnSceneWasLoaded” it was a static method that comes from the previous scene.
I do not understand.
Why it tells me that the object does not exist anymore and something tries to access it?
Everything should be “new”, no static scripts or variable .

In a nutshell:
I do not understand why attempts to access to the object previously destroyed and not that afresh generated at the scene reload.

What you use seems a bit wierd… I see that you’re using OnSceneWasLoaded , What I would try using is OnLevelWasLoaded() {} but I don’t know if you can still get the (Scene previousScene, LoadSceneMode loadSceneMode ) with that

I think that Unity has some great deficiencies in the Scene transition.