Quick answer: Unity Input System rebind persistence missing the actual control after restart? Save format must include both action ID and binding path - use SaveBindingOverridesAsJson.
Player rebinds Jump. Restart; binding shows the action but no input.
Use built-in save
string json = playerInput.actions.SaveBindingOverridesAsJson();
PlayerPrefs.SetString("binds", json);Library-provided; correct format.
Restore on launch
LoadBindingOverridesFromJson at startup. Bindings restored before first input.
Avoid manual binding paths
Don't construct binding paths yourself. The library's format is forward-compatible.
“Rebind state has structure. Use the library's serializer.”
If you rolled your own rebind save, replace with the built-in serializer. Forward-compatibility is the gain.