{ }Blueprint → C++

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

C++
// .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.

Related Events & Dispatchers nodes

View all Events & Dispatchers nodes →