Punchdev voxcub.com
Tool — Scene Diff

See what changed, not what moved.

Scene Diff compares two versions of a Unity scene or prefab and reports the difference the way the Editor thinks about it: by GameObject, by component, by property. Objects are matched by their fileID and GUID identity, so a rename is a rename and a reorder is nothing at all.

The problem

Unity's files are text, but their meaning is not

A .unity or .prefab file is YAML, so Git will happily show you a diff of it. That diff is close to useless. Renaming one GameObject can rewrite a block hundreds of lines long. Reparenting an object shows up as a deletion in one place and an insertion in another, with no indication that they are the same object. Reordering siblings churns the file without changing anything the player will ever see. Meanwhile an actual change — a reference repointed to the wrong material — is one line that looks exactly like every other line.

Reviewers end up reconstructing the scene in their head from fileID numbers. Most of them give up and approve the pull request on trust.

What it does

Capabilities

  • Identity matching Objects are paired by fileID and GUID before anything is compared. Name-based matching — the approach most comparison tools use — breaks the moment somebody renames a node or has two siblings called "Cube".
  • Grouped by object Results are organised as a hierarchy of GameObjects and components with inspector-style property names, not as raw serialized field paths.
  • Prefab overrides Prefab instance modifications are compared as overrides against their source, rather than as opaque entries in an m_Modifications list.
  • Noise collapsed Differences caused purely by serialization version migration are folded away, so upgrading the Editor does not make every asset look modified.
  • Read-only Scene Diff opens files, parses them and shows you the result. It never writes, never merges, never "fixes". Point it at production assets without a backup ritual.
When it earns its keep

Typical uses

Reviewing a pull request that touches a scene. Instead of scrolling YAML, you get a list of the objects the branch actually changed and what changed on them.

Before accepting a merge. A text merge can complete cleanly and still leave a wrong parent or a broken reference. Comparing the merged result against both inputs catches that before it reaches the main branch.

Auditing an automated edit. Scripted asset passes and editor agents can touch dozens of objects in one run. Diffing the before and after gives you a reviewable record of what the run did.

Working out what a teammate did. "The lighting looks different and I don't know why" is a diff question, but only if the diff speaks in objects.

Requirements

Compatibility

  • Unity 2022.3 LTS and newer, including Unity 6.
  • Serialization Project must use Force Text asset serialization (Project Settings → Editor → Asset Serialization).
  • Render pipeline Irrelevant. Scene Diff is an Editor tool that reads serialized files and ships no shaders or runtime code.
  • Builds Editor-only. Nothing from this package is compiled into a player build.