Save coordinates

I need save the player coordinates (save and load system), I read about “PlayerPrefs” but do not understand ( noob and bad english :frowning: ) … anyone can help me?

function SavePlayerPosition()
{
	PlayerPrefs.SetFloat("PlayerPositionX",Player.transform.position.x);
	PlayerPrefs.SetFloat("PlayerPositionY",Player.transform.position.y);
	PlayerPrefs.SetFloat("PlayerPositionZ",Player.transform.position.z);
}

function LoadPlayerPosition()
{
	Player.transform.position.x = PlayerPrefs.GetFloat("PlayerPositionX",0.0);
	Player.transform.position.y = PlayerPrefs.GetFloat("PlayerPositionY",0.0);
	Player.transform.position.z = PlayerPrefs.GetFloat("PlayerPositionZ",0.0);
}

You also might want to save player’s rotation.

This would make things easier.

–Eric

Thx mate, but for example when i use:

var myCoords = new float[10];
for (i = 0; i < myCoords.Length; i++)
    myCoords[i] = i+1.5;
if (!PlayerPrefsX.SetFloatArray("Coordinates", myCoords))
    print("Can't save coordinates");

have an error: Unknown identifier “PlayerPrefsX” …

Yes i know, i’m noob, can u help me?

Read the usage docs for ArrayPrefs on that page.

–Eric

Well i use the following code and work fine:

import System.Collections;
import System.Xml;
import System.Xml.Serialization;
import System.IO;
import System.Text;

class DemoData
{
    var x : float;
    var y : float;
    var z : float;
    var name : String;
}

 class UserData
 {
   public var _iUser : DemoData = new DemoData();
   function UserData() { }
}

private var _Save : Rect;
private var _Load : Rect;
private var _SaveMSG : Rect;
private var _LoadMSG : Rect;
private var _FileLocation : String;
private var _FileName : String = "SaveData.xml";


var _Player : GameObject;
var _PlayerName : String = "Jugador";

private var myData : UserData;
private var _data : String;

private var VPosition : Vector3;


function Awake () { 

      _Save=new Rect(200,80,100,20);
      _Load=new Rect(200,100,100,20);
      _SaveMSG=new Rect(10,120,200,40);
      _LoadMSG=new Rect(10,140,200,40);
       

      _FileLocation=Application.dataPath;
      
          
      myData=new UserData();
   }
   
function Update () {}
   
function OnGUI()
{   

   // ***************************************************
   // Load Data
   // **************************************************       
   if (Input.GetButtonDown("Cargar")) {
      
      GUI.Label(_LoadMSG,"Cargando de: "+_FileLocation);
      LoadXML();
      if(_data.ToString() != "")
      {
         myData = DeserializeObject(_data);
         VPosition=new Vector3(myData._iUser.x,myData._iUser.y,myData._iUser.z);             
         _Player.transform.position=VPosition;
         Debug.Log(myData._iUser.name);
      }
   
   }
   
   // ***************************************************
   // Save data
   // **************************************************   
   if (Input.GetButtonDown("Guardar")) {
            
      GUI.Label(_SaveMSG,"Guardando en: "+_FileLocation);
      myData._iUser.x = _Player.transform.position.x;
      myData._iUser.y = _Player.transform.position.y;
      myData._iUser.z = _Player.transform.position.z;
      myData._iUser.name = _PlayerName;   
        
      _data = SerializeObject(myData);
      CreateXML();
      Debug.Log(_data);
   }


}

function UTF8ByteArrayToString(characters : byte[] )
{     
   var encoding : UTF8Encoding  = new UTF8Encoding();
   var constructedString : String  = encoding.GetString(characters);
   return (constructedString);
}

function StringToUTF8ByteArray(pXmlString : String)
{
   var encoding : UTF8Encoding  = new UTF8Encoding();
   var byteArray : byte[]  = encoding.GetBytes(pXmlString);
   return byteArray;
}

function SerializeObject(pObject : Object)
{
   var XmlizedString : String  = null;
   var memoryStream : MemoryStream  = new MemoryStream();
   var xs : XmlSerializer = new XmlSerializer(typeof(UserData));
   var xmlTextWriter : XmlTextWriter  = new XmlTextWriter(memoryStream, Encoding.UTF8);
   xs.Serialize(xmlTextWriter, pObject);
   memoryStream = xmlTextWriter.BaseStream;
   XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
   return XmlizedString;
}

function DeserializeObject(pXmlizedString : String)   
{
   var xs : XmlSerializer  = new XmlSerializer(typeof(UserData));
   var memoryStream : MemoryStream  = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
   var xmlTextWriter : XmlTextWriter  = new XmlTextWriter(memoryStream, Encoding.UTF8);
   return xs.Deserialize(memoryStream);
}

function CreateXML()
{
   var writer : StreamWriter;
   var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName);
   if(!t.Exists)
   {
      writer = t.CreateText();
   }
   else
   {
      t.Delete();
      writer = t.CreateText();
   }
   writer.Write(_data);
   writer.Close();
   Debug.Log("File written.");
}
   
function LoadXML()
{
   var r : StreamReader = File.OpenText(_FileLocation+"/"+ _FileName);
   var _info : String = r.ReadToEnd();
   r.Close();
   _data=_info;
   Debug.Log("File Read");
}

but i need save the “level” too, any idea?