I’m trying to get a control menu working, which would allow the player to remap keybindings using the enhanced input system.
It works, almost.
However, I’m not able to save/load, If i save and exit, and load back in.
The keybindings in the menu will be saved, but the actual inputs themselves wont be.
For example, If I set jump from “Space bar” to “R” then I press “R” I’ll jump.
If I save/load. the menu will show Jump being set to “R”
But “R” will no longer jump, neither will space.
this happens because setting the key in the Map isnt enough — you have to persist via UEnhancedInputUserSettings and re-apply on load. flow that works: on construct call Get Enhanced Input User Settings -> Get Player Mappable Keys to build the UI, on rebind do Map/Unmap Player Key then Save Settings, and on game start (GameInstance or PlayerController BeginPlay) do Load Settings -> Register Settings -> Apply Settings. if you only save the widget text the engine never re-applies the mapping so it looks saved but doesnt fire.
btw i ran into the same save/load desync — ended up using advanced enhanced input key remapping from fab Advanced Enhanced Input Key Remapping / Binding / Profiles / Local & Cloud Save. | Fab for that project. it handles the local save + apply on startup for you and also adds cloud sync (steam/eos) if you need cross-device. fixes the exact issue you described without extra savegame code.