• A lot of people have requested an erase method of some sort on the forums, but haven't seen anything surface about it. – Ash Blue Jul 14 '14 at 5:27

You essentially need to Destroy(..) the GameObjects that came from your 2nd scene, manually.

Quick solution: for your 2nd scene, make an empty root GameObject positioned at global 0,0,0. Any other GameObject in your scene becomes a child of that. After loading the 2nd scene additively, the root will be in the hierarchy. Just Destroy(...) the root, and all GameObjects that came from the 2nd scene will be deleted too.

• Ok, so a scene is really just a list of objects, and once they come in, it's not really known which scene they came from. Got it. – Almo Mar 11 '14 at 14:34
• I know this is old, but just in case someone is still looking for it: I f you do use his technique of adding the whole scene as a child of an empty object, you can just name the root object with the name of the scene and then get it with GameObject.Find("name"); – Matheus Rocha Apr 28 '18 at 0:55
• This solutions has some bug: it leaves many opened empty scenes and you'll have a garbage after some opens and closes of additive scene. – JavaRunner Sep 16 '18 at 4:07

Just giving an up to date answer. In 2017.1 you use UnloadSceneAsync to unload loaded levels. The tips and tricks section at the bottom of MultiSceneEditing has some guidance.