Save & Load Pro
Runtime save system. Multi-slot, async I/O, pluggable serializers, Safe-Write crash protection, and ready-made slot UI included.
by TBOXFINN
Price History +
Implementing a save system from scratch means boilerplate registration, custom serialization, corruption handling, and a slot UI — all before writing a single line of game logic. Save & Load Pro handles all of that so you can focus on your game. Drop the GeneralSaveable component on any GameObject to persist Transform, Physics, Animation, Audio, and Lighting with Inspector checkboxes — no code required. For custom data, implement one two-method interface and the system finds your object automatically.
💾 Zero-Boilerplate Auto-Discovery
- Any MonoBehaviour that implements ISaveable is found automatically at runtime via scene scanning — no Register() calls, no static lists.
- Keys are derived from the GameObject hierarchy path and component index, guaranteeing uniqueness even across duplicated prefabs.
🔒 Safe-Write Crash Protection
- Every write goes to a .tmp file first, then the old save is renamed to .bak, then the temp is swapped in — three atomic phases that protect data at every point of failure.
- On read, the driver transparently falls back to the .bak backup if the main file is missing or unreadable.
🎨 Ready-Made Slot UI
- SaveSlotUI renders all save slots in a uGUI Canvas with slot name, timestamp, playtime, scene name, and a 256×144 screenshot thumbnail captured from Camera.main.
- Empty slots show a "New Game" button; occupied slots show Save, Load, and Delete. Autosave toggle and interval dropdown are built in.
🔧 Pluggable Serializers & Storage
- Switch between JSON, Binary, Encrypted JSON, and Encrypted Binary in SaveManagerConfig — no code changes needed anywhere else.
- Three built-in storage drivers: LocalDisk (persistent data path), PlayerPrefs (WebGL), and CloudStub (async interface stub ready for Firebase or PlayFab).
⚡ Async-First, Non-Blocking I/O
- All serialization and disk operations run on a background thread via Task.Run. The main thread is never blocked during save or load.
- Full CancellationToken support on every async method.
📦 Multi-Slot with Rich Metadata
- Each slot stores timestamp, accumulated playtime, scene name, screenshot thumbnail, schema version, and a custom metadata dictionary.
- GetAllProfiles() returns all slots sorted by last-modified — feed it directly to your slot UI or leaderboard screen.
↩️ Save Migration & Versioning
- Every save file stores a schema version integer. Register IMigrationStep implementations and SaveMigrator upgrades old saves automatically on load.
- Rename keys, change types, or restructure data between versions without breaking existing player saves.
📝 Dual Event System
- Every operation fires both C# events (Action<int>) and UnityEvent<int> equivalents for full Inspector wiring support.
- ISaveCallbackReceiver gives per-object OnBeforeSave() and OnAfterLoad() hooks on the main thread.