What is the difference between blueprint implimentable events and native events

I’m trying to make an interface through c++ to be used in my blueprints and I came upon the function specifiers “BlueprintImplimentableEvent” and “BlueprintNativeEvent” and I couldn’t really find any documentation on what they actually do. What is the difference between the two specifies? Could anyone help me out? Thanks.

Main issue is fact that UnrealHeaderTool (UHT) need to generate code that will call blueprint when you call that event function in C++, as much as people gonna tell you that UE4 use some magical “UE4 C++” it still normal C++ and it bound to it rules, if UHT generated that code for function you can not place your own definition in cpp file and you can not add code for event in C++.

And this is where the diffrence sits:

-BlueprintImplimentableEvent only generates code that call event on blueprint side, this event can be only be defined in blueprint

-While “BlueprintNativeEvent” will declare extra special virtual function with _Implementation surrfix in generated code which you can override and call it when event is called in C++ and blueprint as well as you can define this event in blueprint to.

In short it a choose to either add C++ layer to the event or not. If you don’t plan to define event in C++ use first one if not then use 2nd. If you use BlueprintNativeEvent you WILL NEED to define _Implementation function or else you gonna have linker errors, it main reason why you need to choose between the 2 so you don’t need to create empty definitions for all events which only gonna be used in blueprint anyway

3 Likes