Persistent Asset

Persistent Asset is an easy-to-use, reliable, and complete save system with a unique concept: it saves your data in scriptable objects.

Fast and Easy to Use
Persistent Asset does not require any extra setup.
Create a class with the fields you want to save, and you are good to go!
The tool even provides a way to save and load without any actions or configuration needed from you.

Clean and Maintainable Workflow
The scripts follow SOLID principles and are separated into logic modules with one-way dependencies.
This makes common operations like changing how some data is saved during development as simple as a few clicks in the inspector.

Integrated Design
Persistent Asset is highly integrated with Unity’s default behavior, ensuring ease of use and future-proof functionality.
It makes full use of modern engine features to be both comprehensive and straightforward.

Extendable API
Want to use a non-Unity serialization logic, like one from another tool on the store?
Or enjoy the simplicity of Persistent Asset with another save behavior, whether offline or online?
By inheriting from dedicated classes, you can extend the tool’s functionalities and make it compatible with any other serialization or save system.
Some utility classes are provided, making the process simpler.

Standard Features
• Automatic save and load at specific application events
• Save in local files, PlayerPrefs, or custom sources
Backup your data in case of a crash, in the editor and at runtime
AES encryption and secured hash generation
Compression using Gzip
• And more!

Unique Features
Visualize and edit your data from the inspector
• Automatic regular background save
• Effortlessly manage multiple save slots
Reset to default values at runtime
• Smooth integration of any non-unity serialization or custom save system
Synchronous and asynchronous support
• Composition-based approach; no inheritance issues
Memory dump protection for the encryption key
• Enforce a maintanable workflow
• And more!

Painless Usage
The tool includes debug utilities: extensive logs in the inspector (no console spam!), benchmarking save and load operations, and a dedicated test component.
It does not produce any script warnings and works just the same in no reload on play mode.
The entire public API has XML comments, regrouped in a DocFX generated PDF for easy access, and all sources are included (100+ scripts).

Documentation and Help
The documentation is clear, complete, and includes a one-page quick usage guide.
The demo showcases all features in a complete game scenario.
Contacting support via email guarantees a response within a day or less, and there is a public Discord community for additional assistance.

Try it First
Want to try it out?
See for yourself how your project could benefit from Persistent Asset by getting the Lite version here.

Regular Updates
This tool will receive updates to fix bugs and introduce new features.
If you enjoy Persistent Asset, please consider leaving a review. Your feedback helps improve it!

Technical details
Fully compatible with all operating systems.
Compatible with all target platforms, the tool provides an alternative way to save on platforms that don’t support file saving.
Tested on version 2020.3 and above.

Buy the asset
Persistent Asset is available at a regular price of 19.99$ here.

Changelogs
VERSION 1.2.0: Quality of Life Update (10/19/23)
• Removed the VariableSerializerPersistenceManager class
PersistenceManager: now have a Serializer field, no longer have serialization related abstract methods, new SerializeTarget and DeserializeTarget methods
FilePersistenceManager: separator character changed to a zero width space, manual save and load are now sync by default
PersistenceManagerEditor now have fade groups, making them way cooler 🙂
• Small internal changes to the PersistenceManager class to make it more maintanable

VERSION 1.1.0: Serializer Module Update (09/20/23)
Aim of this update is to let you handle custom serialization logic by creating a small class instead of redefining an entire PersistenceManager.
New classes
Serializer can be inherited to define a serialization logic
VariableSerializerPersistenceManager is a PersistenceManager that contains a Serializer
UnityJsonSerializer is the default Serializer, it follows Unity serialization rules
Other change
SerializationMode enum created, used for Serializer methods
DemoSecureKeyInitializer now only logs when launching the game from the editor
• Renamed the SerializeToString and DeserializeFromString methods in PersistenceManager to GenerateDefaultValues and ResetToDefaultValues
Prototype, PlayerPrefs, and File persistence managers now inherit from VariableSerializerPersistenceManager
PersistentJsonUtility.FromJsonOverwrite now has a parameter letting you choose whether to merge arrays or override them
Addons editor classes updated to account for the aforementioned changes