why am I losing player.transform position in saved game when I change levels

I have a save/load script that works pretty well except when I change scenes. Example: scene1, I run around and hit “save” . Run around some more and hit “load” and I am back at where I hit the save button. In other words it works. now I run around and run into a trigger that sends me to the next level. So I’m at level 2, hit “load” and I DO go back to level1 where I saved, but I am NOT at the spot I saved. I am at the starting position of the level. I watch in the Inspector window as the var slot where I drag the player empties out. Anyone see what is wrong with the script? The commented out var Blur and MouseLook were to get unity to accept it and I don’t think that is the problem as it DOES save position, just not when going to a different scene

class ComponentsClass { 
	//var BlurEffect : Blur;
	//var Look : MouseLook;
}
var Components : ComponentsClass = new ComponentsClass ( ) ;
var Restart: String;
var playerPosition : Transform;
var mainMenuSceneName : String;
var Skin : GUISkin;
var LoadPosition : String = "false";  //set to "true" is you want to load position or "false" to load only level
private var LoadLevel : boolean = true;
//private var Look1 : MouseLook;
var pauseMenuFont : Font;
 private var PlayerX : float;
 private var PlayerY : float;
 private var PlayerZ : float;

private var pauseEnabled = false;			

function Start(){
	PlayerPrefs.SetString("LoadPosition",LoadPosition); //set loadPosition true or false
	pauseEnabled = false;
	Time.timeScale = 1;
	AudioListener.volume = 1;
	Screen.showCursor = false;
	LoadPlayer();
}

function SavePlayer(){
			if(PlayerPrefs.GetString("LoadPosition") == "true"){   //save current position			
				PlayerPrefs.SetFloat("PlayerX",PlayerX);
				PlayerPrefs.SetFloat("PlayerY",PlayerY);
				PlayerPrefs.SetFloat("PlayerZ",PlayerZ);
				PlayerX =(playerPosition.transform.position.x);
				PlayerY =(playerPosition.transform.position.y);
				PlayerZ =(playerPosition.transform.position.z);				
				PlayerPrefs.SetString("LoadPosition", "true");   //allow the load position
				//Debug.Log("Saved to " + " X: " + PlayerPrefs.GetFloat("PlayerX") + " Y: " + PlayerPrefs.GetFloat("PlayerY") + " Z: " + PlayerPrefs.GetFloat("PlayerZ"));
			}
			PlayerPrefs.SetString("LevelName", Application.loadedLevelName);   //save current level
}

function loadLevel(){  //load saved position
		if(PlayerPrefs.GetString("LevelName") == Application.loadedLevelName){   //check if you have Loaded Level
			LoadLevel = false;
		}
		
		if(LoadLevel == true){
				Application.LoadLevel(PlayerPrefs.GetString("LevelName"));
				Application.LoadLevel(PlayerPrefs.GetString("LoadPosition"));	//load saved level
		}
}

function LoadPlayer(){   //load player position on saved level
		if(LoadLevel == false && PlayerPrefs.GetString("LoadPosition") == "true"){
			playerPosition.transform.position.x = (PlayerPrefs.GetFloat("PlayerX"));
			playerPosition.transform.position.y = (PlayerPrefs.GetFloat("PlayerY"));
			playerPosition.transform.position.z = (PlayerPrefs.GetFloat("PlayerZ")); 
			//Debug.Log("LOAD POS");
		}
}

function Update(){

PlayerX =(playerPosition.transform.position.x); PlayerY =(playerPosition.transform.position.y); PlayerZ =(playerPosition.transform.position.z);   //set current player position
LoadPosition = PlayerPrefs.GetString("LoadPosition"); //check if loadPosition is true or false

	//check if pause button (escape key) is pressed
	if(Input.GetKeyDown("escape")){
	//Look1 = gameObject.GetComponent (MouseLook);  //set MouseLook script
	
		//check if game is already paused		
		if(pauseEnabled == true){
			//unpause the game
			pauseEnabled = false;
			Time.timeScale = 1;
			AudioListener.volume = 1;
			Screen.showCursor = false;	
           // Components.BlurEffect.enabled = false;
			//Components.Look.enabled = true;
			//Look1.enabled = true;
		}
		
		//else if game isn't paused, then pause it
		else if(pauseEnabled == false){
			pauseEnabled = true;
			AudioListener.volume = 0;
			Time.timeScale = 0;
			Screen.showCursor = true;
			//Components.BlurEffect.enabled = true;
			//Components.Look.enabled = false;
			//Look1.enabled = false;
		}
	}
}

private var showGraphicsDropDown = false;

function OnGUI(){

GUI.skin = Skin;

	if(pauseEnabled == true){
		
		//Make a background box
		GUI.Box(Rect(Screen.width /2 - 100,Screen.height /2 - 180,250,280), "Pause Menu");
		
			if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 50,250,50), "Restart Level")){
			Application.LoadLevel(Restart);
		}
		
		//Make Main Menu button
		if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 0,250,50), "Main Menu")){
			Application.LoadLevel(mainMenuSceneName);
		}
		
		//Make Save Game button
		if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 100,250,50), "Save Game")){
        SavePlayer();
        }
		
		if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 150,250,50), "Load Game")){
		loadLevel();
		LoadPlayer();
		}
		
		//Make Change Graphics Quality button
			if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 +50,250,50), "Change Graphics Quality")){
			
			if(showGraphicsDropDown == false){
				showGraphicsDropDown = true;
			}
			else{
				showGraphicsDropDown = false;
			}
		}
		
		//Create the Graphics settings buttons, these won't show automatically, they will be called when
		//the user clicks on the "Change Graphics Quality" Button, and then dissapear when they click
		//on it again....
		if(showGraphicsDropDown == true){
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 ,250,50), "Fastest")){
				QualitySettings.currentLevel = QualityLevel.Fastest;
			}
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 50,250,50), "Fast")){
				QualitySettings.currentLevel = QualityLevel.Fast;
			}
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 100,250,50), "Simple")){
				QualitySettings.currentLevel = QualityLevel.Simple;
			}
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 150,250,50), "Good")){
				QualitySettings.currentLevel = QualityLevel.Good;
			}
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 200,250,50), "Beautiful")){
				QualitySettings.currentLevel = QualityLevel.Beautiful;
			}
			if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 250,250,50), "Fantastic")){
				QualitySettings.currentLevel = QualityLevel.Fantastic;
			}
			
			if(Input.GetKeyDown("escape")){
				showGraphicsDropDown = false;
			}
		}
		
		//Make quit game button
		if (GUI.Button (Rect (Screen.width /2 - 100,Screen.height /2 + 100,250,50), "Quit Game")){
			Application.Quit();
		}
	}
}

UPDATE: As described above…if save spot in level one, hitting load button in level two takes me back to level 1 but NOT the right player position. BUT, if I hit the load button again, it Will take me to the spot I saved