Binary
A binary serialization formatter helper for Unity
Serialization Surrogate is setting of binary serializer and deserializer.
Usage
[System.Serializable]
public class PlayerData
{
public string playerName;
public int score;
public Vector3 position;
public PlayerData(string name, int score, Vector3 pos)
{
playerName = name;
this.score = score;
position = pos;
}
}
public class SerializationExample : MonoBehaviour
{
private string filePath;
IFormatter formatter;
void Start()
{
formatter = AceSerialization.GetBinaryFormatter();
filePath = Application.persistentDataPath + "/playerData.dat";
PlayerData data = new PlayerData("John", 100, new Vector3(1, 2, 3));
SerializeData(data);
PlayerData loadedData = DeserializeData();
if (loadedData != null)
{
Debug.Log("Loaded Player Name: " + loadedData.playerName);
Debug.Log("Loaded Score: " + loadedData.score);
Debug.Log("Loaded Position: " + loadedData.position);
}
}
void SerializeData(PlayerData data)
{
using (FileStream stream = new FileStream(filePath, FileMode.Create))
{
formatter.Serialize(stream, data);
}
Debug.Log("Data serialized to " + filePath);
}
PlayerData DeserializeData()
{
if (File.Exists(filePath))
{
using (FileStream stream = new FileStream(filePath, FileMode.Open))
{
return formatter.Deserialize(stream) as PlayerData;
}
}
else
{
Debug.LogWarning("Save file not found in " + filePath);
return null;
}
}
}Surrogates
Unity provides many useful data model but not natively serializable to binary. Following Serialization Surrogate is provided in this package:
AnimationCurve
AnimationCurveSerializationSurrogate
Bounds
BoundsIntSerializationSurrogate
BoundsInt
BoundsSerializationSurrogate
Color
ColorSerializationSurrogate
Gradient
GradientSerializationSurrogate
Hash128
Hash128SerializationSurrogate
LayerMask
LayerMaskSerializationSurrogate
Rect
RectSerializationSurrogate
RectInt
RectIntSerializationSurrogate
Vector2
Vector2SerializationSurrogate
Vector3
Vector3SerializationSurrogate
Vector4
Vector4SerializationSurrogate
Vector2Int
Vector2IntSerializationSurrogate
Vector3Int
Vector3IntSerializationSurrogate
Quaternion
QuaternionSerializationSurrogate
Matrix4x4
Matrix4x4SerializationSurrogate
Last updated