Unreal Engine 5 · Blueprint → C++
Blueprint Native Event in Unreal Engine 5 C++UE Docs
BlueprintNativeEvent declares a function with a default C++ body that Blueprints can override. You declare it in the header and write the default in a _Implementation suffixed method in the .cpp.
Blueprint node & C++ equivalent
// .h — default C++ body, overridable in Blueprint
UFUNCTION(BlueprintNativeEvent, Category="Gameplay")
void OnScored(int32 Points);
// .cpp — note the _Implementation suffix
void AMyActor::OnScored_Implementation(int32 Points) { /* default */ }What is BlueprintNativeEvent?
BlueprintNativeEvent combines C++ and Blueprint: C++ supplies a default implementation, and a Blueprint subclass can override it. If Blueprint overrides it, the Blueprint version runs; if not, the C++ default runs.
Declare it in the header: UFUNCTION(BlueprintNativeEvent, Category="Gameplay") void OnScored(int32 Points);. The default behaviour goes in the .cpp under the _Implementation name: void AMyActor::OnScored_Implementation(int32 Points) { /* default */ }.
Why the _Implementation suffix
For a BlueprintNativeEvent, Unreal Header Tool generates the public OnScored function for you and expects you to define the body in OnScored_Implementation. Call the event using the plain name OnScored(10);; never call OnScored_Implementation directly unless you are inside an override calling the parent default.
When you override the event in another C++ subclass, you override OnScored_Implementation and can call Super::OnScored_Implementation(Points) to run the base default.
BlueprintNativeEvent vs BlueprintImplementableEvent
Use BlueprintNativeEvent when C++ needs a working default that designers may optionally replace. Use BlueprintImplementableEvent when there is no C++ default at all and the logic lives entirely in Blueprint.
The key code difference is the body: BlueprintNativeEvent requires an _Implementation definition in the .cpp, while BlueprintImplementableEvent must have no C++ body.
Frequently asked questions
What is the difference between BlueprintNativeEvent and BlueprintImplementableEvent?+
BlueprintNativeEvent provides a C++ default (in an _Implementation method) that Blueprint can override. BlueprintImplementableEvent has no C++ body and must be implemented entirely in Blueprint.
Why does BlueprintNativeEvent use the _Implementation suffix?+
Unreal Header Tool generates the public function, so you define the default behaviour in a method named with the _Implementation suffix, such as OnScored_Implementation, while callers use the plain name OnScored.
How do I call the C++ default from a BlueprintNativeEvent override?+
From a C++ subclass override of OnScored_Implementation, call Super::OnScored_Implementation(Points) to run the parent class default behaviour.