Scene Set Hub
Named groups of scenes with per-scene enabled flags. One-click Load (first enabled scene Single, the rest Additive) or Load Additive. Reorder, duplicate, capture the open setup, validate missing files, and optionally sync enabled flags into Build Settings.
Editor-only. Unity 2021.3+. Lives in Rivet.Editor (includePlatforms: Editor). No extra packages.
Editor window
ArTchie / Rivet / Scene Set Hub
| Control | What it does |
|---|---|
| Create set | Adds a named set (unique, trimmed). |
| Rename / Duplicate / Delete | Renames the selected set, copies it as Name Copy (then Name Copy 2…), or removes it (delete asks first). Duplicate persists immediately. |
| Add scene / Add selected | Object field or current Project selection. Only Assets/**/*.unity. |
| Capture open scenes | Replaces the selected set from currently loaded scenes (EditorSceneManager.GetSceneManagerSetup order, enabled=true). Untitled / Packages/ / Library/ paths are skipped. Empty capture is allowed in the window (writes an empty set). |
| Enabled toggle / Up / Down / Remove | Per-scene flag used by Load. Up/Down reorder and persist immediately. |
| Missing paths | Scenes not on disk draw in red. The Scenes header shows a missing count. |
| Load | First enabled scene on disk: OpenSceneMode.Single. Remaining enabled: Additive. Prompts to save dirty scenes. |
| Load Additive | Every enabled scene Additive. Same save-dirty prompt. |
| Sync enabled to Build Settings | For scenes in the selected set that exist on disk, set EditorBuildSettings.scenes enabled to match and add missing build entries. Does not remove unrelated build scenes. |
| Copy JSON / Write report | Dumps all sets. Report: <project>/RivetReports/scene-set-hub.json. |
| Reload file | Re-reads the persist file. |
Persist path: <project>/ProjectSettings/RivetSceneSets.json (creates ProjectSettings/ if needed). Skips Packages/ and Library/.
Batchmode (CI)
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.SceneSetHub.RunBatch -rivet-set Gameplay -rivet-action list -rivet-out <file.json>
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.SceneSetHub.RunBatch -rivet-set Gameplay -rivet-action load -rivet-fail
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.SceneSetHub.RunBatch -rivet-set Gameplay -rivet-action capture -rivet-allow-empty
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.SceneSetHub.RunBatch -rivet-set Gameplay -rivet-action add-scene -rivet-scene Assets/Foo.unity
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.SceneSetHub.RunBatch -rivet-set Gameplay -rivet-action sync-build
| Arg | Meaning |
|---|---|
-rivet-action list|load|load-additive|capture|add-scene|remove-scene|duplicate|sync-build |
Default list. |
-rivet-set <name> |
Target set. Case-insensitive. Required for every action except list. |
-rivet-scene <Assets/Foo.unity> |
Scene path for add-scene / remove-scene. |
-rivet-allow-empty |
capture only: write an empty set when no project scenes are loaded. |
-rivet-out <file.json> |
Output path. Default: <project>/RivetReports/scene-set-hub.json |
-rivet-fail |
Exit code 1 if load / load-additive and the named set is missing. |
Action details:
| Action | Behavior |
|---|---|
list |
Dump all sets. |
load / load-additive |
Open enabled on-disk scenes. Same Single/Additive rules as the window. |
capture |
Create or replace -rivet-set from loaded setup-order scenes (enabled=true). With no open project scenes, fails unless -rivet-allow-empty. |
add-scene |
Append -rivet-scene (enabled=true). Creates the set if missing. Already-present paths are a no-op success. |
remove-scene |
Drop -rivet-scene from the named set. Missing set fails. Missing path is a no-op success. |
duplicate |
Writes Name Copy (then Name Copy 2…) with the same scene list. |
sync-build |
Requires -rivet-set. Same as the window button: match enabled flags and add missing build entries; do not strip unrelated build scenes. |
Unknown -rivet-action, a load that cannot open any enabled scene on disk, capture with no scenes and no -rivet-allow-empty, invalid add-scene path, or a missing set for duplicate / remove-scene / sync-build, exits 1 in batch even without -rivet-fail.
RunBatch only calls EditorApplication.Exit when Application.isBatchMode is true. It logs action=, count=, missing=, loaded=, and the output path.
Also accepts -rivet-set=Gameplay / -rivet-action=list / -rivet-out=file.json / -rivet-scene=Assets/Foo.unity.
JSON
The report is always a dump of all sets, plus what this run did. missingCount is the number of listed scene paths that are not on disk. Persist JSON does not store exists (computed at report time).
{
"tool": "SceneSetHub",
"generatedUtc": "2026-08-18T04:00:00Z",
"action": "load",
"requestedSet": "Gameplay",
"found": true,
"loaded": ["Assets/Scenes/Boot.unity", "Assets/Scenes/Hud.unity"],
"count": 1,
"missingCount": 0,
"items": [
{
"name": "Gameplay",
"scenes": [
{ "path": "Assets/Scenes/Boot.unity", "enabled": true, "exists": true },
{ "path": "Assets/Scenes/Hud.unity", "enabled": true, "exists": true }
]
}
]
}
Persist file
ProjectSettings/RivetSceneSets.json:
{
"sets": [
{
"name": "Gameplay",
"scenes": [
{ "path": "Assets/Scenes/Boot.unity", "enabled": true }
]
}
]
}
Hand-written JSON is parsed with a small built-in reader (no Newtonsoft). A missing or unreadable file starts as an empty store.
Notes
- Disabled scenes and missing files are skipped on load (missing files log a warning).
- Empty projects and a missing
RivetReports/ProjectSettingsfolder are fine. - Window Load / Load Additive still prompt to save dirty scenes (
SaveCurrentModifiedScenesIfUserWantsTo). - Untitled (no path) scenes are not captured.
sync-buildnever removes Build Settings entries that are not in the named set.- Does not touch runtime player code.
Source in the box: Assets/ArTchie Studios/ArTchie-Suite/com.artchie.rivet/Documentation/SceneSetHub.md