Class SerializationHelper
ENGINE LAYER - Low-level binary serialization utilities
Principles:
- Deterministic serialization (same data = same bytes)
- Platform-independent (works on Windows/Mac/Linux)
- Efficient binary format (no JSON/XML overhead)
- Type-safe helpers for common patterns
Handles:
- FixedPoint64 (as long RawValue for determinism)
- NativeArray (raw memory copy)
- Primitives (int, ushort, string, etc.)
- Arrays of primitives
public static class SerializationHelper
- Inheritance
-
objectSerializationHelper
Methods
ReadFixedPoint64(BinaryReader)
Deserialize FixedPoint64 from long value
public static FixedPoint64 ReadFixedPoint64(BinaryReader reader)
Parameters
readerBinaryReader
Returns
ReadFixedPoint64Array(BinaryReader)
Deserialize array of FixedPoint64 values
public static FixedPoint64[] ReadFixedPoint64Array(BinaryReader reader)
Parameters
readerBinaryReader
Returns
ReadNativeArray<T>(BinaryReader, Allocator)
Deserialize NativeArray from raw bytes Allocates new NativeArray - caller must dispose
public static NativeArray<T> ReadNativeArray<T>(BinaryReader reader, Allocator allocator) where T : struct
Parameters
readerBinaryReaderallocatorAllocator
Returns
- NativeArray<T>
Type Parameters
T
ReadNativeArray<T>(BinaryReader, NativeArray<T>)
Deserialize NativeArray from raw bytes into existing array (in-place) Does NOT allocate - reads into provided array Useful for restoring double-buffered arrays without reallocation
public static void ReadNativeArray<T>(BinaryReader reader, NativeArray<T> destinationArray) where T : struct
Parameters
readerBinaryReaderdestinationArrayNativeArray<T>
Type Parameters
T
ReadSparseUShortArray(BinaryReader)
Read sparse ushort array
public static ushort[] ReadSparseUShortArray(BinaryReader reader)
Parameters
readerBinaryReader
Returns
- ushort[]
ReadString(BinaryReader)
Read string with length prefix (null-safe)
public static string ReadString(BinaryReader reader)
Parameters
readerBinaryReader
Returns
- string
ReadUShortArray(BinaryReader)
Read ushort array with length prefix
public static ushort[] ReadUShortArray(BinaryReader reader)
Parameters
readerBinaryReader
Returns
- ushort[]
WriteFixedPoint64(BinaryWriter, FixedPoint64)
Serialize FixedPoint64 as deterministic long value
public static void WriteFixedPoint64(BinaryWriter writer, FixedPoint64 value)
Parameters
writerBinaryWritervalueFixedPoint64
WriteFixedPoint64Array(BinaryWriter, FixedPoint64[])
Serialize array of FixedPoint64 values
public static void WriteFixedPoint64Array(BinaryWriter writer, FixedPoint64[] values)
Parameters
writerBinaryWritervaluesFixedPoint64[]
WriteNativeArray<T>(BinaryWriter, NativeArray<T>)
Serialize NativeArray as raw bytes (fastest, deterministic) IMPORTANT: Only works for blittable structs (no managed references)
public static void WriteNativeArray<T>(BinaryWriter writer, NativeArray<T> array) where T : struct
Parameters
writerBinaryWriterarrayNativeArray<T>
Type Parameters
T
WriteSparseUShortArray(BinaryWriter, ushort[])
Write sparse ushort array (only non-zero values) Format: count, [index, value] pairs Efficient for arrays where most values are 0
public static void WriteSparseUShortArray(BinaryWriter writer, ushort[] array)
Parameters
writerBinaryWriterarrayushort[]
WriteString(BinaryWriter, string)
Write string with length prefix (null-safe)
public static void WriteString(BinaryWriter writer, string value)
Parameters
writerBinaryWritervaluestring
WriteUShortArray(BinaryWriter, ushort[])
Write ushort array with length prefix
public static void WriteUShortArray(BinaryWriter writer, ushort[] array)
Parameters
writerBinaryWriterarrayushort[]