Preserve component values modified during Play Mode. No more losing tweaks when you press Stop.
Unity discards all component changes made during Play Mode the moment you press Stop. This forces a tedious loop of:
- Enter Play Mode → tweak values → mentally note them
- Exit Play Mode → re-enter the values by hand
- Repeat until it feels right
Play Save Mode breaks that loop entirely.
- Save Now — snapshot a component's current values at any moment during play
- Save When Exiting — track a component and capture its final state when you press Stop
- Always Save — register a component once; it auto-saves every single play session
- Editor Window —
Tools > Play Save Modeshows all registered components, their status, and lets you apply or clear saves manually - Hierarchy Indicator — an orange icon appears next to any GameObject with pending saves; click it to jump straight to the window
- Undo support — all applied changes are wrapped in a single Undo group (
Ctrl+Zto revert) - Auto scene save — the scene is saved automatically after changes are applied
- No dependencies — four plain C# files, no packages, no Asset Store
- Copy the four files into your project under
Assets/Editor/PlaySaveMode/:
Assets/
└── Editor/
└── PlaySaveMode/
├── PlaySaveModeManager.cs
├── PlaySaveModeMenuItems.cs
├── PlaySaveModeWindow.cs
└── PlaySaveModeHierarchyIndicator.cs
- Unity will recompile automatically. No further setup required.
⚠️ All files must live inside anEditor/folder. Unity will throw compile errors if they are placed in a runtime-compiled folder.
Snapshot the component's values at this exact moment.
- Enter Play Mode
- Modify any component values in the Inspector
- Right-click the component header (or click ⋮) →
Play Save Mode > Save Now - Press Stop — values are applied automatically
Track a component and save its final state when you stop.
- Enter Play Mode
- Right-click the component header →
Play Save Mode > Save When Exiting Play Mode - Keep tweaking freely — the latest state at the moment you press Stop is saved
Set-and-forget. Works across all future play sessions.
- Right-click the component header (in any mode) →
Play Save Mode > Always Save When Exiting Play Mode - A ✓ checkmark confirms it's active
- Click again to un-register
Open via Tools → Play Save Mode
| Area | Description |
|---|---|
| Status banner | Green in Play Mode, grey in Edit Mode |
| Pending Saves list | Shows GameObject name, component type, and always badge |
| Ping button | Highlights and selects the object in the Hierarchy |
| Remove button | Drops a component from the queue without touching the scene |
| Apply All Changes | Applies all pending saves (Edit Mode only) |
| Clear All | Removes all registrations with a confirmation prompt |
The window is fully dockable — drag it next to your Inspector for a permanent view while playtesting.
An orange icon appears at the right edge of any row in the Hierarchy that has at least one pending save.
- Updates live every 500ms during Play Mode
- Clicking the icon opens the Play Save Mode window directly
- Disappears automatically after changes are applied or cleared
- Serializable fields only — saves
[SerializeField]andpublicfields. Private non-serialized fields are not captured. - Scene objects only — Project-window prefabs are not targeted.
EditorJsonUtilitybased — nested references to other scene objects serialized as instance IDs may not resolve correctly across domain reloads.
| File | Responsibility |
|---|---|
PlaySaveModeManager.cs |
Snapshot storage, serialization, apply-on-exit logic, Undo |
PlaySaveModeMenuItems.cs |
Right-click / ⋮ context menu entries on every component |
PlaySaveModeWindow.cs |
Dockable Editor Window (Tools > Play Save Mode) |
PlaySaveModeHierarchyIndicator.cs |
Orange indicator icon in the Hierarchy window |
MIT — free to use, modify, and distribute.