Change spawn point and destroy objects when entering scene (C#)

Hi

Me and a few of my friends are currently in the process of creating a small game in Unity using C#.

To give you a short overview, the player starts out in a scene called “tjhorror”. Once they’ve collected a certain amount of notes in this area, they can progress to the next scene called “house”, and after that they can move on to “basement”.

The thing we’re trying to do now, is make it so that the player can travel back from the house to tjhorror, and from the basement to the house. However, in order to make sure this transition between scenes makes sense, we need to make sure that the player’s spawn point is changed and the notes that they have previously collected are gone as well.

Is there any way to get this done in code? Or is the simplest solution to just copy the entire scene, change the spawn point, remove the notes and just have Unity load this copied scene when the player returns to the scene?

Thanks!

ChangeScene.cs

using UnityEngine;
using System.Collections;

public class ChangeScene : MonoBehaviour
{
    void OnTriggerEnter()
    {
        Debug.Log("Entered scene change cube.");
        string currentLevel = Application.loadedLevelName;
        switch (currentLevel)
        {
            case "tjhorror":
                    Application.LoadLevel("House");
                    Collectibles.collected = 0; 

                break;
            case "House":
                // if player Z position <= -20
                Application.LoadLevel("Basement");
                Collectibles.collected = 0;
                break;
            /* else
                * Application.LoadLevel("tjhorror");
                * Collectibles.collected = 3 */
            case "basement":
                Application.LoadLevel("House");
                break;
            default:
                Debug.Log("this is the switch's default case");
                break;
        }
    }
}

You have to store somewhere states of your game, like what or how much notes the player already collected on what level he is currently and so on, you may use some object that don’t get destroyed on loadlevel and store states in variables\arays, on scene load you use script that will get that state values, and remove some object (like notes, spawnpoints) or moving \ disabling\enabling spawnpoints or just moving your player, whatever you want.

Take a look at this: http://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html
and this: How does "DontDestroyOnLoad" work? - Unity Answers

Also you can save and load states between game launches using Unity - Scripting API: PlayerPrefs and you can google whatever you want to ask about this and DontDestroyOnLoad, because there are plenty of information.