- Home /
Transform object issues
Hello guys, I've encountered an issue I can't figure out; How to move a player to their last saved location upon load. I have three scripts written in C# whose purpose is to accomplish this:
Pause, a script to perform a save/load function
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 using System.Runtime.Serialization.Formatters.Binary;
 using System.IO;
 
 public class Pause : MonoBehaviour {
 
     public static List<Game> savedGames = new List<Game>();
 
     public static bool paused = false;
     public Texture saveButton;
     public Texture loadButton;
     public static bool saving = false;
 
     void Update(){
 
         if(Input.GetKeyUp (KeyCode.P)){
 
             paused = !paused;
 
         }
     }
 
     void OnGUI(){
 
         if(paused && GUI.Button(new Rect(525, 250, 256, 64), saveButton, GUIStyle.none)){
 
             Pause.savedGames.Add(Game.current);//Add a save file
             BinaryFormatter bf = new BinaryFormatter();//Prepare serialization tool
             FileStream file = File.Create ("C:/Users/shane/Documents/FourKingdoms/Assets/savedGame.gd");//Defining save file path, and name the save file there
             bf.Serialize(file, Pause.savedGames);//Use the prepared binary formatter to serialize the designated classes
             file.Close();//Close the file (duh)
             Debug.Log ("C:/Users/shane/Documents/FourKingdoms/Assets/savedGame.gd");
             saving = true;
 
         }
         if(paused && GUI.Button(new Rect(525, 350, 256, 64), loadButton, GUIStyle.none)){
 
             if (File.Exists ("C:/Users/shane/Documents/FourKingdoms/Assets/savedGame.gd")) {//Make sure there is a saved game
                 
                 BinaryFormatter bf = new BinaryFormatter ();//Prepare deserialization tool
                 FileStream file = File.Open ("C:/Users/shane/Documents/FourKingdoms/Assets/savedGame.gd", FileMode.Open);//Find file
                 Pause.savedGames = (List<Game>)bf.Deserialize (file);//Use deserialization tool
                 file.Close ();//Close the file (duh)
                 Debug.Log ("Loaded file  C:/Users/shane/Documents/FourKingdoms/Assets/savedGame.gd");
                 Player.SetLoc ();
                 
             } else {
                 
                 Debug.Log ("No save file found");
                 
             }
         }
     }
 }
Game, a script to hold variables that will be saved/loaded:
 using UnityEngine;
 using System.Collections;
 
 [System.Serializable]
 public class Game{
     
     public static Game current;
     public static Vector3 pLoc;
     /*public static float xLoc;
     public static float yLoc;
     public static float zLoc;*/
 
     void Update(){
 
         if(Pause.saving){
 
             /*xLoc = Player.ReportXLoc();
             yLoc = Player.ReportYLoc();
             zLoc = Player.ReportZLoc();*/
             pLoc = Player.GetLoc();
             Pause.saving = false;
 
         }
     }
 }
And finally player, which is attached to(you guessed it) the player.
 using UnityEngine;
 using System.Collections;
 
 public class Player : MonoBehaviour {
     
     public static GameObject player;
     public static float xLoc;
     public static float yLoc;
     public static float zLoc;
     public static Vector3 playerLoc;
     // Use this for initialization
     void Start () {
     
         player = GameObject.Find ("First Person Controller");
 
     }
     public static Vector3 GetLoc(){
 
         playerLoc = player.transform.position;
         return playerLoc;
 
     }
 
     public static void SetLoc(){
 
         player = GameObject.Find ("First Person Controller");
 
         player.transform.position = new Vector3 (Game.pLoc.x, Game.pLoc.y, Game.pLoc.z);
     
     }
 }
I am thoroughly stumped, any help would be greatly appreciated, thanks!
Answer by SenorGoatMan · Aug 07, 2014 at 02:17 AM
Well, sir, it is plain to see for even the blindest of fools that you must serialize the x, y and z values of you player's location upon saving and then deserialize them upon loading.
Stop talking to yourself on a public forum, people might think we're weird
Your answer
 
 
             Follow this Question
Related Questions
Picking up an Object and locking its position relative to parent. 1 Answer
Javascript to C# 1 Answer
Moving an object away from collider 1 Answer
GUI.Button child of the camera . 0 Answers
How do I serialize a class? 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                