User Manual

A save system for Unity that persists your ScriptableObject data between play sessions. Inherit one class and your fields start saving themselves.

The whole idea

Make a class that inherits PersistentScriptableObject. Every serialized field on it now survives between play sessions, automatically.

using PersistentAsset;
using UnityEngine;

[CreateAssetMenu(menuName = "Player Data")]
public class PlayerData : PersistentScriptableObject
{
    public int gold;
    public int level = 1;
}

That is the entire setup. Create the asset, press Play, change the values, stop, press Play again, and they are still there. No save code, no file paths, no boilerplate.

Never used a ScriptableObject? Here is a two-minute primer before you start.
The example above already covers most projects. Slots, encryption, cloud saves and designer-friendly variables are optional, layered on top as a game needs them.

Why persist a ScriptableObject?

Your game data already wants to live in ScriptableObjects: decoupled from any scene, shared across the whole project, and editable by designers right in the inspector. That makes a ScriptableObject the natural single source of truth for player data, a profile, settings, progression, an inventory.

A traditional save system breaks that clean design: you build a separate set of save structures, copy fields into them to write, copy them back to read, and keep the two models in sync release after release. Persistent Asset removes that whole layer. Your ScriptableObject is the save, so the data you already designed persists in place, with no parallel data model, no mapping code, and nothing to drift out of date. Design your data once, and it saves itself.

Where to go next

Author & Contact

Created by Juste Tools.

If Persistent Asset helps your project, a review on the Asset Store goes a long way. Thank you!