Recommendation
Use Enhanced Input for new UE5 work. Keep legacy input only while maintaining an existing system when migration costs more than the needed features.
Compare the options
Enhanced Input
Choose when
- The project needs runtime remapping or contextual controls.
- Input uses priorities, chords, holds, dead zones, modifiers, or triggers.
- Actions need bool, 1D, 2D, or 3D values.
Tradeoffs
- The system adds Input Action and Mapping Context assets.
- Triggers, modifiers, and context priority need a clear project convention.
- Blueprint
- Use Input Action assets, Input Mapping Contexts, Enhanced Input events, and the Local Player Enhanced Input Subsystem.
- C++
- Use UInputAction, UInputMappingContext, UEnhancedInputComponent, and UEnhancedInputLocalPlayerSubsystem.
Legacy Input
Choose when
- An established UE4-style project is still in maintenance.
- The current mappings meet project needs and migration has no practical return.
Tradeoffs
- Legacy mappings lack Enhanced Input contextual and runtime remapping tools.
- New UE5 samples and CommonUI integration center on Enhanced Input.
- Blueprint
- Use legacy Action Event and Axis Event nodes configured in Project Settings.
- C++
- Use UInputComponent::BindAction and BindAxis.
Requirements
Enhanced Input uses the Enhanced Input plugin and the EnhancedInput module.
Example
Create Walking, Driving, and Menu Mapping Contexts. Add and remove them through the Local Player Enhanced Input Subsystem as the player changes state.