RiggyTry it

Spine error: Parent bone not found

spine-csharp (Unity)
Parent bone not found: body — SkeletonJson.ReadSkeletonData
spine-ts (web, Phaser, PixiJS)
(no error: the bone is loaded without a parent) — SkeletonJson.readSkeletonData — no check

The same skeleton.json fails in Unity and loads on the web. Both runtimes read bones in file order and look each parent up among the bones read so far, so a parent that is missing or listed after its child is not found. The C# runtime throws; spine-ts gives the bone no parent and carries on.

Why the web runtime does not complain

In spine-ts the parent lookup has no check: when the name is not found, the bone is created without a parent. It becomes a second root, placed relative to the skeleton origin instead of its intended parent, and does not follow it. Nothing is logged — the part is just in the wrong place and stays still when the parent moves.

Why it happens

  • Bones written by a script or generator in an arbitrary order (alphabetical, by layer) instead of parents first. The Spine editor always exports parents first.
  • The parent was renamed or deleted, and the child still names it.

How to fix it

Order the bones so that each one comes after its parent, starting from the single root.

// broken: "arm" is read before its parent exists
"bones": [ { "name": "root" }, { "name": "arm", "parent": "body" }, { "name": "body", "parent": "root" } ]

// fixed: parents first
"bones": [ { "name": "root" }, { "name": "body", "parent": "root" }, { "name": "arm", "parent": "body" } ]

Check your skeleton

The Spine JSON validator finds this in a skeleton.json before the runtime does, and names the exact place. It runs in your browser; the file is not uploaded. Riggy runs the same check on every rig it builds.

Other Spine runtime errors