pause menu loads saved game quirky
can anyone see what is wrong with my Java script pause menu? When I have a saved game, then go to another level, bring up the pause menu and hit " load", it will take me to the correct level but the player is in his start position - not where he was when I saved. but if I bring up the pause menu again and hit "load" again he will then go to the right position. Clearly there is nothing wrong with the "save" code as his position is obviously being saved as it loads on the second time I press "load". So what is it in my script that just doesn't load the level and the player and the player position. on the first time I click "load". obviously...if I am on the same level as the same game I just need to hit the load button once. It's only when I am on a different level than my saved game I need to hit it twice. I get an error:
Level 'true' (-1) couldn't be loaded because it has not been added to the build settings. To add a level to the build settings use the menu File->Build Settings...
but it IS in the build settings. I have deleted and re-added them 3 times just to be sure. And if it wasn't in the build settings it wouldn't be taking me there at all...right?
double clicking on the error takes me to line 75 in the" function loadLevel(){ " part and the actual line 75 reads: Application.LoadLevel(PlayerPrefs.GetString("LoadPosition"));
var Components : ComponentsClass = new ComponentsClass ( ) ;
public var rightarmon : int ;
public var healthToSave : int;
public var scoreToSave : int;
public var restartScore: int = 0;
var Restart: String;
var playerPosition : Transform;
var mainMenuSceneName : String;
var Skin : GUISkin;
private var LoadPosition : String = "true"; //set to "true" is you want to load position or "false" to load only level
private var LoadLevel : boolean = true;
private var Camera2 : Camera;
var pauseMenuFont : Font;
private var PlayerX : float;
private var PlayerY : float;
private var PlayerZ : float;
public var newdeplete : int;
private var pauseEnabled = true;
function Awake(){
PlayerPrefs.GetInt("RighArmOn");
//PlayerPrefs.GetInt ("HasRARM");
}
function Start(){
PlayerPrefs.SetString("LoadPosition",LoadPosition); //set loadPosition true or false
pauseEnabled = false;
Time.timeScale = 1;
AudioListener.volume = 1;
Screen.showCursor = false;
LoadPlayer();
//RARM = GameObject.Find("RightArm").GetComponent.<UnityEngine.UI.RawImage>();
rightarmon = PlayerPrefs.GetInt("RightArmOn");
//
}
function reStart(){ //load player position on saved level
Application.LoadLevel(Application.loadedLevel);
//playerHealth.currentHealth = 100;//PlayerPrefs.SetFloat (playerHealth.currentHealth);
ScoreManager.score = 00;
rightarmon = 0;
PlayerPrefs.DeleteKey("RightArmOn");
}
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");
PlayerPrefs.SetInt ("pooper",scoreToSave );
PlayerPrefs.SetInt ("health",healthToSave );
PlayerPrefs.SetInt ("RightArmOn",rightarmon );
PlayerPrefs.SetInt("newdeplete", newdeplete);
}
PlayerPrefs.SetString("LevelName", Application.loadedLevelName); //save current level
Debug.Log("Prefs");
}
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
Debug.Log("loadedlevel");
}
}
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"));
PlayerPrefs.GetInt ("pooper" );
PlayerPrefs.GetInt ("health" );
PlayerPrefs.GetInt ("RightArmOn");
PlayerPrefs.GetInt("newdeplete");
GameObject.Find("scorecube").GetComponent.<Animation>().enabled = true;
Debug.Log("l");
}
}
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
//scoreToSave = GetComponent.<myjs2>().curValue;
healthToSave = GameObject.FindWithTag("Player").GetComponent.<healthCtoJ>().curValue2;
rightarmon = PlayerPrefs.GetInt("RightArmOn");
newdeplete = PlayerPrefs.GetInt("newdeplete");
//RARM.enabled = true;
//check if pause button (escape key) is pressed
if(Input.GetKeyDown("escape")){
//check if game is already paused
if(pauseEnabled == true){
//unpause the game
pauseEnabled = false;
Time.timeScale = 1;
AudioListener.volume = 1;
Screen.showCursor = false;
}
//else if game isn't paused, then pause it
else if(pauseEnabled == false){
pauseEnabled = true;
AudioListener.volume = 0;
Time.timeScale = 0;
Screen.showCursor = true;
}
}
}
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 - 160,270,330), "");
if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 50,250,50), "Restart Level")){
//Application.LoadLevel(Restart);
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 - 100,250,50), "Load Game")){
loadLevel();
LoadPlayer();
LoadPlayer();
}
//Make Change Graphics Quality button
if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 +50,250,50), "Graphics")){
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;
saving = false;
loading = false;
}
}
//Make quit game button
if (GUI.Button (Rect (Screen.width /2 - 100,Screen.height /2 + 100,250,50), "Quit Game")){
Application.Quit();
}
}
}