Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by shadowpuppet · Jun 02, 2016 at 12:13 AM · saveloadsavegame

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();
         }
     }
 }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by shadowpuppet · Jun 02, 2016 at 12:30 AM

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

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image shadowpuppet · Aug 10, 2016 at 06:39 PM 0
Share

I finally stumbled onto the solution up at line 37 the code reading " PlayerPrefs.SetString("LoadPosition", "true"); when moved to under line 40 beneath the lines " } PlayerPrefs.SetString("LevelName", Application.loadedLevelName);"

made it work like I wanted. don't understand it or what even motivated me to move it there but it works

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

57 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

how to save a lot of character data? 1 Answer

File.Delete not working but Scene reloads.,Save file wont delete but scene reloads 0 Answers

Good Tutorials for Saving Player Data 1 Answer

Save and Load GameObject with Components like Scripts 0 Answers

Saving item count with Playerprefs 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges