I have looked at some tutorials using dontdestroyonload, but none of them give a real answer to this.
I have a menu (dropdown) that loads contains all my levels (buttons) But now I want this menu to carry though to any level the user selects without duplicating itself, which seems to be the issue with dontdestroy as it will create a clone of itself, should the use go back to the same level again.
I recommend creating a prefab to keep all your objects that should not be destroyed. Place your menu object in the prefab only and remove it from your levels. You will then need a script that runs on each level that checks for the existence of the prefab (using GameObject.Find(“NameHere”) == null). If none is found then the script should instantiate it. These types of prefabs should be placed in a folder called resources.
You can also temporarily put this prefab in a level to test and edit your menu. Once done you will want to remove it from the scene though.
Why not assign the menu prefab to a variable in your gamecontroller (drag-drop prefab from project pane to variable slot in gamecontroller in your scene). When you press the menu button the level-menu gets instantiated.