A save system where declaring a class is enough. No registration, no ScriptableObject, no references to wire up.ImplicitSave is a save system for Unity where declaring a class is the entire setup.[SaveId("items")]public class ItemsSaveData : SaveData{public int Coins;public SerializableDictionary Bag;}var items = SaveManager.Get();items.Coins += 10;That is the whole integration. No central ScriptableObject to maintain, no manual registration, no references to drag into a field, and no save manager prefab to keep in every scene. Changes are written on their own: on the autosave tick, when the app is paused or loses focus, and on quit.WHAT YOU GET• Zero-config discovery — a class deriving from SaveData is found, given a file, and kept as one live instance per profile. Discovery uses TypeCache in the editor and a generated registry in builds, so it survives IL2CPP with managed stripping set to High. There is a window listing every type found and what each one is called on disk, because a system you cannot inspect is a system you cannot trust.• A Save Editor window — open, read and edit any save file from inside Unity, including while the game is running, against the live instance. It draws your own custom property drawers.• Dictionaries that survive on every version you support — SerializableDictionary ships with a drawer and works from 2021.3 on, and the file stays readable: {"potion": 3}. Unity 6.6 added native Dictionary serialization, and those fields are saved too when you run on 6.6 or newer: the package follows the editor's rules rather than a hard-coded list.• Save slots (profiles) — create, switch, copy, rename and delete. The same save class is stored once per slot, so a "load game" screen needs no second class.• Schema migration — versioned files and migration steps applied in order, found on their own. A file written by a NEWER build of your game is never overwritten, so a player who downgrades does not lose progress.• Polymorphic fields — a List holding swords, potions and bows keeps every subtype through a save, persisted by a stable id instead of a .NET type name. Renaming a class does not break saves.• Unity's built-in structs — Vector2/3/4, Quaternion, Color, Rect, Bounds, LayerMask, Hash128 and the rest, saved with the names their C# API uses.• Atomic writes with a backup — a crash mid-write cannot leave a corrupt file, and a file that cannot be read is recovered from its .bak.• Validation on compile — fields that would silently never reach the file (a Dictionary, a property, a class without [Serializable], nesting deeper than Unity serializes) are reported with the fix, in the console, before a player ever hits it.• Plain JSON on disk — open it in any text editor. Nothing is hidden in a binary blob.SAMPLESFour of them, each a scene to press Play on: Basic Usage (the demo scene), Multi Profile, Polymorphism and Migration.REQUIREMENTS• Unity 2021.3 or newer.• Json.NET ("com.unity.nuget.newtonsoft-json") is installed for you on import - it is declared as a package dependency. ImplicitSave never ships its own copy of Json.NET, which is what keeps it from clashing with other assets that use it. If your project already has Json.NET as a loose DLL, keep a single copy.TESTEDThe full test suite runs on Unity 2021.3 LTS, 2022.3 LTS, Unity 6.0 and Unity 6.6, on every change, in continuous integration. The IL2CPP path is verified on a real Android device with managed stripping on High, because that is where a save system usually breaks.SUPPORT AND SOURCESupport happens through GitHub Issues: https://github.com/bionics07/Implicit-SaveThe source is there too, MIT licensed. Copies obtained through the Asset Store are governed by the Asset Store EULA instead - same code, same features, either way.ImplicitSave is free.Donations accepted at https://ko-fi.com/bionics07FEATURES• Zero-config discovery. Declare a class deriving from SaveData and it gets a file. No registration, no central ScriptableObject, no scene object, no references to wire up.• Survives IL2CPP. Types are discovered through TypeCache in the editor and through a generated registry in builds, verified on a real Android device with managed stripping set to High.• Save Editor window. Open, inspect and edit any save file from inside Unity, including in Play Mode against the live instance. Honours your own custom property drawers.• SerializableDictionary with a drawer, portable from Unity 2021.3 on. On Unity 6.6 and newer, plain Dictionary fields are saved as well. Either way the file stays readable: {"potion": 3}.• Save slots (profiles). Create, switch, copy, rename and delete. The same save class is stored once per slot.• Schema migration. Versioned files and migration steps applied in order, discovered automatically. A file written by a newer build of the game is never overwritten.• Polymorphic fields. [SerializeReference] lists keep every subtype through a save, stored by a stable id rather than a .NET type name, so renaming a class does not break saves.• Unity's built-in structs: Vector2/3/4, Quaternion, Color, Color32, Rect, RectInt, Bounds, BoundsInt, LayerMask, Matrix4x4, Hash128.• Atomic writes with a .bak backup and recovery from it when a file cannot be read.• Autosave on a timer, on pause, on focus loss and on quit, writing only what actually changed.• Validation on compile: fields that would silently never reach the file are reported with the fix.• Plain JSON on disk. No binary blob, no hidden format.• Full C# source included. No DLLs.SUPPORTED UNITY VERSIONS• Unity 2021.3 LTS or newer. The test suite runs on 2021.3 LTS, 2022.3 LTS, Unity 6.0 and Unity 6.6 on every change, in continuous integration.SUPPORTED PLATFORMS• Windows, macOS, Linux, Android, iOS and consoles: anything Unity builds to that has a writable Application.persistentDataPath. Verified on Windows (editor and player) and on a real Android device with IL2CPP.• WebGL is not verified yet. Saving there goes through the browser's storage and the background write queue has no threads to use, so treat it as untested rather than supported.DEPENDENCY• Json.NET ("com.unity.nuget.newtonsoft-json") comes in with the import, declared as a dependency. ImplicitSave never ships its own copy, which is what keeps it from conflicting with other assets that use Json.NET - if your project already has it as a loose DLL, keep a single copy.DOCUMENTATION AND SUPPORT• https://github.com/bionics07/Implicit-Save• Support through GitHub Issues. Full source, README and troubleshooting are in the repository.ImplicitSave was written with AI assistance. Claude (Anthropic) was used as a pair programmer throughout: drafting implementation code, tests, documentation and the store images from my direction.Every change was reviewed by me before it was committed, and behaviour was verified by an automated test suite of 314 tests that runs on Unity 2021.3 LTS, 2022.3 LTS and Unity 6 on every change, plus manual testing in the editor and a build on a real Android device.No third-party content was reproduced: the code, documentation and images were produced for this package.The key images are drawn by a script (geometry and typography), not generated by an image model.The package itself contains no AI or machine learning at runtime. It does not call any service, and it sends no data anywhere - it reads and writes JSON files in the project's persistent data path.




