A modular, extensible and editor-friendly Save System for Unity, supporting multiple serialization formats (PlayerPrefs, JSON, XML), with visual debugging and management tools built using Odin Inspector.
- 🔁 Strategy Pattern: Plug-and-play architecture with interchangeable save methods
- 💾 Supported Formats:
- PlayerPrefs (with Odin serialization)
- JSON file
- XML file
- 🧠 Editor Tool:
- Odin Editor Window for previewing saved data
- Visual decoding for PlayerPrefs, JSON, and XML
- Deletion of individual entries
- Auto refresh on changes
- Clear indication of save locations per method
- 🧱 Extensible Architecture:
- Easy to add encryption, cloud saving, or custom file handling
- Facade over save methods to switch runtime behavior
- Stored in system registry (Windows) or plist (macOS)
- Serialized via Odin using Base64 + JSON
- Located at:
Application.persistentDataPath/player_data.json
- Fully human-readable
- Located at:
Application.persistentDataPath/player_data.xml
- Readable and compatible with standard tools
Save Example | Switch Method Example |
---|---|
![]() |
![]() |
PlayerPrefs | JSON | XML |
---|---|---|
![]() |
![]() |
![]() |
A flexible Unity editor tool for saving and loading ScriptableObject
data (e.g., level balances, configs) to and from JSON files.
- Export/import any ScriptableObject
- Auto-generated file naming with timestamp
- Load and overwrite previous saves
- Built-in file management (delete, refresh)
- Odin-based polished UI
Save New File | Load / Overwrite |
---|---|
![]() |
![]() |
- Unity 2022+
- Odin Inspector
- Sirenix Serialization
[Serializable]
public class PlayerData
{
public string PlayerName;
public int Level;
public float Health;
public Vector3 Position;
public bool HasPremium;
public GameSettings Settings;
public InventoryData Inventory;
public QuestProgress[] Quests;
}
saveLoadFacade.Save(SaveMethod.Json, playerData);
PlayerData loaded = saveLoadFacade.Load(SaveMethod.PlayerPrefs);