Unity Editor Tool · v1.0.0

Transforms Snapshot Tool

Capture children of a parent in local space — move the parent and the configuration follows. Stack configs at every depth of the hierarchy and switch between combinatorial scene states with one call. Works in Edit, Play, and Build.

The workflow

3 Simple steps

Capture

Pick a scope, snapshot

Select objects, click Capture, and choose what gets included: selected only, selected with children, all descendants, or one level of children. Each config is stored as its own ScriptableObject.

  • Four capture scope preset to choose
  • Update button re-captures at current values
  • Add/remove objects from an existing config
Organize

Categories, search, isolate

Colored category bars with isolate mode. Live text search. Filter by selection in three modes — Any, All, or Only — to find configs touching specific objects.

  • Isolate a category, hide everything else
  • Multi-select for bulk delete, move, export
  • Validation badges for orphaned references
Apply (Edit Mode, Play Mode, Runtime)

Snap, lerp, or partial

Pick an apply mode per config — Auto, World, Local, or Selected-Only. Toggle position, rotation, scale independently. Snap instantly or lerp with the config's own easing curve.

  • Auto / World / Local / Selected-Only modes
  • Apply configs in Edit Mode or Play Mode
  • Per-config AnimationCurve and duration for Runtime

The signature feature

Stack configs at every depth.

Capture a parent's children — not the parent itself — and the config becomes portable. Move the parent anywhere, the children follow. Layer this at every level of the hierarchy and a handful of small captures produces a tree of combinatorial scene states.

ROOM
Layout_Open Layout_Dining Layout_Lounge
TABLE
Table_Clear Table_Working Table_Cluttered
CHESSBOARD
Chess_Opening Chess_Midgame Chess_Endgame
3×3×3 = 27 distinct scene states from 9 captures

Everything inside

Built for production scenes

EDITOR

Cross-scene config import

Queue configs in one scene, import into another. A resolution dialog walks any renamed objects — resolving one ancestor propagates to all its children.

EDITOR

Paste transforms between configs

Copy a pose from one config onto another's objects, even when names differ. Map-by-Order pastes a 60-object rig onto a differently-named variant in one click.

EDITOR

Scene-op aware

Rename a scene and the library folder follows. Duplicate it and the tool offers to clone configs into a fresh library — runtime references are rebound automatically.

EDITOR

Validation and cleanup

Status badges flag orphaned references — yellow for partial, red for fully stale, asterisks on categories. Clean orphans per-config or across the whole scene.

RUNTIME

Snap or lerp per call

Each config carries its own AnimationCurve and duration. Pass lerp: true to interpolate; omit it to snap. StopLerp() cancels in flight.

RUNTIME

Capture at play time

RuntimeCaptureWriter snapshots live transforms during gameplay and persists them as JSON in persistentDataPath. Optional auto-purge keeps only the N most recent.

RUNTIME

Keyboard shortcuts

Assign trigger keys per config with a per-key Snap or Lerp transition. Supports both the new Input System and the legacy Input Manager.

QUALITY

Zero editor dependency

Runtime classes — RuntimeApplyExample, RuntimeCaptureWriter, RuntimeApplyOptions — have no UnityEditor references and ship safely in builds.

Runtime API

Two layers,
zero glue.

RuntimeApplyExample plays back configs captured in the editor. RuntimeCaptureWriter snapshots live transforms during gameplay and persists them as JSON.

Both have no UnityEditor dependency and ship safely in builds. Use the example components as-is, or call the core API from your own scripts.

GameplayController.cs
// ── Apply editor-captured configs ── public RuntimeApplyExample snapshots; void OnVictory() => snapshots.Apply("VictoryPose", lerp: true); void OnHit() => snapshots.Apply("Recoil"); void OnCancel() => snapshots.StopLerp(); // ── Capture and persist at play time ── var snap = RuntimeCaptureWriter.Capture("Checkpoint", objects); RuntimeCaptureWriter.Save(snap); // → JSON on disk var loaded = RuntimeCaptureWriter.Load("Checkpoint"); RuntimeCaptureApplier.ApplyConfiguration(loaded);

Transform Snapshot Tool
for Level Designers

Capture once. Stack at every depth. Switch with one call.