🧰 Zion Tools
Unity Editor Asset Tools
Zion Scene Backup - Documentation
Quick Start
- Import the package.
- Open
Edit > Project Settings > Zion > Scene Backup. - Confirm the default settings are sensible for your project (5-minute timer, backup on Play, backup on focus loss, retain last 20 per scene / 7 days).
- Continue working. Backups are silent.
- When you need to recover, open the browser from
Window > Zion > Scene Backups(orTools > Zion > Scene Backup > Open Backup Browser), pick a snapshot, and restore.
Concepts
Triggers
Four independent triggers can fire a backup pass:
| Trigger | Default | When it fires |
|---|---|---|
| Interval | On (5 min) | Every N minutes while the editor is idle and not in Play Mode. |
| On Play | On | The instant the user enters Play Mode. |
| On Compile | Off | After every successful script compile. Useful but noisy. |
| On Focus Lost | On | When the editor window loses focus (e.g. you alt-tab away). |
Each trigger calls BackupAllOpenScenes, which iterates every loaded scene with a saved path and writes a copy via EditorSceneManager.SaveScene(..., saveAsCopy: true). Untitled scenes are skipped - there's nothing to back up to yet.
Exclusion rules 1.1
Automatic triggers can skip scenes you don't want in your history. Manual Backup Now ignores exclusions and always captures every open scene.
- Exclude patterns - one glob per line (
*and?supported, case-insensitive). A scene is skipped if its name or its asset path matches any pattern (e.g.*_test,Scenes/Sandbox/*). - Minimum scene size - skip scenes whose source file is smaller than a given number of kilobytes. Set to
0to disable the size floor.
Storage
Backups live under one of three roots:
- Library folder (default):
<ProjectRoot>/Library/SceneBackups/. Already gitignored by Unity. - Project root:
<ProjectRoot>/SceneBackups/. Tracked by VCS unless you ignore it. - Custom: any absolute or project-relative path you choose.
Filenames follow {SceneName}_{yyyy-MM-dd_HH-mm-ss}.unity so they sort chronologically. Each backup has a .meta.json sidecar recording the trigger reason, source path, Unity version, and source size. From 1.1 the sidecar also stores tags, a note, the recorded object count, and the pinned flag. The schema is additive - backups written by 1.0 are read without migration.
Retention
The pruner runs after each successful backup and keeps a file if any of these is true:
- It is among the most recent N backups for its scene (default: 20).
- It is younger than the configured age cap (default: 7 days).
- It is pinned 1.1 - pinned backups are exempt from pruning entirely, regardless of count or age.
A backup that fails all checks is deleted along with its sidecar. The OR-policy is intentional - a long quiet period shouldn't wipe history, and pinning lets you protect a known-good snapshot indefinitely.
Crash recovery
On startup, if the previous session didn't run its EditorApplication.quitting handler (crash, kill, power loss), the most recent backup of the previously open scene(s) is offered for one-click restore.
Status feedback 1.1
Backup outcomes surface as a brief, self-fading notification - never a modal dialog that interrupts your work. Failures are always logged to the Console (a silent backup failure is a data-loss risk); successes are quiet unless you enable Notify On Success. The whole feedback layer can be turned off with Show Status Feedback.
Backup Browser 1.1
Open from Window > Zion > Scene Backups or Tools > Zion > Scene Backup > Open Backup Browser. The browser lists your full history on the left and a detail pane on the right.
Restore preview & diff
Selecting a backup shows how it differs from the current scene on disk before you restore, so you roll back to a known-good version instead of guessing:
- Object delta - how many more or fewer objects the backup has than your current scene.
- Size delta - the file-size difference, in a human-readable summary (e.g. "Backup has 12 fewer objects, 4.3 KB smaller than your current scene").
- Unity-version mismatch warning - flags when a backup was made in a different editor version, since restoring across versions can reserialize the scene.
The diff needs the backup's source scene to exist on disk; if it doesn't, the pane says so rather than showing a misleading delta.
Tags & notes
Tag any backup (e.g. milestone, before refactor) and attach a free-text note. Tags and notes live in the backup's sidecar, so they travel with the file and are pruned with it. You can remove a single tag from a backup, or delete a tag from every backup that carries it in one action.
Pin / protect
Pin a known-good snapshot (marked with a ★ star) to exempt it from all retention pruning. Pinned backups are never aged out or dropped by the count limit (see Retention above).
Search, filter & sort
Filter the history by free-text search (across scene name, tags, and notes), by an exact tag, or by a date range. Sort newest- or oldest-first to find the exact moment to roll back to.
Restore actions
From the Backup Browser detail pane:
- Restore latest for this scene 1.1 - one-click recovery of the most recent backup for the selected scene, without browsing. A pre-restore safety backup is taken first.
- Restore (overwrite) - replaces the original scene file with the selected backup. A safety-net "pre-restore" backup is taken first.
- Restore as copy - opens the backup additively so you can cherry-pick edits.
- Reveal in Finder / Explorer - opens the file in your OS file browser.
pre-restore), so even a restore can't lose your current work.
FAQ
Does this slow down my editor?
No. Backups run on save-as-copy, which is fast even on large scenes, and the pruner only touches files for the affected scene. Set "Disable In Play Mode" if you want absolute zero overhead during gameplay testing.
Will backups end up in my build?
No. The package is editor-only - the assembly is excluded from runtime - and the default Library location is never included in builds.
Will Git see thousands of backup files?
Not with the default settings. Library/ is in Unity's default .gitignore. If you switch to the Project Root location, add SceneBackups/ to your ignore file or use it deliberately for tracked history.
Does it back up prefabs / ScriptableObjects?
No. Zion Scene Backup is scene-only by design. Prefab and asset history are out of scope.
What happens to my 1.0 backups after updating?
They keep working. The 1.1 sidecar schema is additive, so existing backups load without migration - they simply show no tags, no note, and an object count of zero (the preview falls back to scanning the file for a count). Nothing is rewritten until you tag, note, or pin a backup.
Changelog
Version 1.1.0
- Restore preview - object-count and file-size diff vs the current scene, with a Unity-version-mismatch warning
- Restore latest for this scene - one-click recovery of the newest backup, with a pre-restore safety backup
- Pin / protect - exempt a known-good backup from all retention pruning
- Tags & notes - label and annotate backups; remove a tag from one backup or from all backups at once
- Search, filter & sort - filter the browser by scene, tag, or date range
- Exclusion rules - skip automatic backups by name/path glob or minimum scene size
- Status feedback - non-modal backup notifications with an optional notify-on-success toggle
- Backup Browser reworked with a live detail pane; opens from both the Window and Tools menus
- Sidecar schema extended (tags, note, object count, pinned) - fully backward-compatible with 1.0 backups
Version 1.0.0 - Initial release
- Four independently-toggleable backup triggers: Timer, On Play, On Compile, On Focus Lost
- Backup Browser with Restore (overwrite), Restore as Copy, Reveal, and Delete
- Per-scene retention with OR-policy (within count window OR age window is kept)
- Crash recovery prompt on next startup if Unity didn't shut down cleanly
- Pre-restore safety backups taken automatically before any overwrite
- Sidecar metadata (.meta.json) recording trigger reason, source path, Unity version, source size
- Project Settings panel with live-update behaviour
- Manual menu items: Backup Now, Prune Now, Open Backup Folder, Simulate Crash Recovery