Destroy object with dontdestroyonload

Hi,

I have some script that is attached to an object so that it isn’t destroyed as you play through level 1, level 2, level 3 and so on. However I want this object to be destroyed when the player reaches the menu screen, I’ve tried some if statements, something like

	if (SceneManager.LoadScene = "sceneSelectBeta") {
		Destroy;
	}

And tried adding some destroy functions but I can’t get the object to delete when it reaches the scene.

Here is the code attached to the object, any help or advice would be appreciated.

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class clockDontDestroy : MonoBehaviour {    

	private static clockDontDestroy _instance = null;
	public static clockDontDestroy Instance
		{
			get { return _instance; }
		}    		

void Awake()
		{
			if (_instance != null && _instance != this)
			{
				Destroy(transform.root.gameObject);
				return;
			}

		_instance = this;

		DontDestroyOnLoad(transform.root.gameObject);
	}
}

I was able to resolve this issue by creating a second script, which finds the game object and destorys it, I then attached the script to an empty gameobject on the scene where the gameobject should be destroyed. Script below:

void Start () {

	Destroy (GameObject.Find("*thegameobjecttobedestroyed*"));

}

This is pretty late, but another option would be using the SceneManager.activeSceneChanged event ( Unity - Scripting API: SceneManagement.SceneManager.activeSceneChanged ).

You’d need to modify your code to something like this:

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class clockDontDestroy : MonoBehaviour
{
    private static clockDontDestroy _instance = null;

    public static clockDontDestroy Instance
    {
        get { return _instance; }
    }

    public static int menuScreenBuildIndex; //the menu screen's index in your Build Settings

    void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(transform.root.gameObject);
            return;
        }
        _instance = this;
        DontDestroyOnLoad(transform.root.gameObject);

        SceneManager.activeSceneChanged += DestroyOnMenuScreen;
    }

    void DestroyOnMenuScreen(Scene oldScene, Scene newScene)
    {
        if (newScene.buildIndex == menuScreenBuildIndex) //could compare Scene.name instead
        {
            Destroy(this); //change as appropriate
        }
    }
}