I need save the player coordinates (save and load system), I read about “PlayerPrefs” but do not understand ( noob and bad english ) … 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?