Lulz
Lulz

Reputation: 13

How can i save my players position in unity without using playerprefs in C#

I've been struggling trying to figure out how to save my players position in unity especially without using playerprefs, and it has to be some sort of float, as you can not save Vectors in a Serializeable class, even some sort of way to convert Vectors(Vector3) to a float would be helpful.

Any help would be appreciated.

Upvotes: 1

Views: 1690

Answers (1)

Jinjinov
Jinjinov

Reputation: 2683

you should implement the ISerializable interface like this:

using UnityEngine;
using System;
using System.Runtime.Serialization;

[Serializable]
public class BasePrefabSaveData : ISerializable
{
   public Vector3 _Position;

   public BasePrefabSaveData()
   {
   }

   public BasePrefabSaveData(SerializationInfo info, StreamingContext context)
   {
      _Position.x = (float)info.GetValue( "Position.x", typeof( float ) );
      _Position.y = (float)info.GetValue( "Position.y", typeof( float ) );
      _Position.z = (float)info.GetValue( "Position.z", typeof( float ) );
   }

   public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
   {
      info.AddValue( "Position.x", _Position.x, typeof( float ) );
      info.AddValue( "Position.y", _Position.y, typeof( float ) );
      info.AddValue( "Position.z", _Position.z, typeof( float ) );
   }
}

Upvotes: 1

Related Questions