Thread-safe Unity save system with encryption, compression, and multi-slot support.
Setup
- Attach
SetupWizard
component to any GameObject
- Configure compression/encryption settings
- Enable auto-slot generation if needed
using SaveLoadSystem;
DataManager.Save("playerName", "John");
DataManager.Save("level", 42);
string name = DataManager.Load<string>("playerName");
int level = DataManager.Load<int>("level");
Core API
DataManager.Save(string key, object value)
void Save(string key, object value)
Saves value synchronously. Thread-safe.
DataManager.Save("score", 1500);
DataManager.Save("position", transform.position);
DataManager.SaveAsync(string key, object value)
async Task SaveAsync(string key, object value)
Saves value asynchronously.
await DataManager.SaveAsync("largeData", bigObject);
DataManager.Load<T>(string key)
T Load<T>(string key)
Loads value synchronously. Returns default(T)
if not found.
int score = DataManager.Load<int>("score");
Vector3 pos = DataManager.Load<Vector3>("position");
DataManager.DeleteValue(string key)
void DeleteValue(string key)
Deletes saved value immediately.
DataManager.DeleteValue("tempData");
DataManager.DeleteValueAsync(string key)
async Task DeleteValueAsync(string key)
Deletes saved value asynchronously.
await DataManager.DeleteValueAsync("tempData");
Save Slot Management
DataManager.CreateSaveSlot(string name)
void CreateSaveSlot(string name)
DataManager.CreateSaveSlot("Player1");
DataManager.SetActiveSlot(string name)
void SetActiveSlot(string name)
DataManager.SetActiveSlot("Player1");
DataManager.DeleteSaveSlot(string name)
void DeleteSaveSlot(string name)
DataManager.DeleteSaveSlot("OldSave");
Permanently deletes all data in the slot.
DataManager.RenameSaveSlot(string oldName, string newName)
void RenameSaveSlot(string oldName, string newName)
DataManager.RenameSaveSlot("TempSave", "MainSave");
DataManager.GetSaveSlots()
List<SaveSlot> GetSaveSlots()
var slots = DataManager.GetSaveSlots();
foreach(var slot in slots)
{
Debug.Log(slot.Name);
}
DataManager.DoesSlotExist(string name)
bool DoesSlotExist(string name)
if(DataManager.DoesSlotExist("Player1"))
{
DataManager.SetActiveSlot("Player1");
}
DataManager.DeleteAllSaveSlots()
void DeleteAllSaveSlots()
DataManager.DeleteAllSaveSlots();
Deletes ALL save data permanently.
Configuration
Compression
DataManager.CompressionType = Compression.None;
DataManager.CompressionType = Compression.GZIP;
Encryption
DataManager.EncryptionType = Encryption.None;
DataManager.EncryptionType = Encryption.AES;
Logging
CustomLogger.CurrentLogLevel = LogLevel.None;
CustomLogger.CurrentLogLevel = LogLevel.Minimal;
CustomLogger.CurrentLogLevel = LogLevel.Detailed;
SaveSlot Methods
slot.GetLastModified()
DateTime GetLastModified()
DateTime lastModified = slot.GetLastModified();
slot.GetFileSize()
long GetFileSize()
long size = slot.GetFileSize();
slot.LoadMetadata()
SaveMetadata LoadMetadata()
SaveMetadata metadata = slot.LoadMetadata();
DateTime saveTime = metadata.saveTime;
Compression compression = metadata.compression;
Encryption encryption = metadata.encryption;