Virtual Functions in Blueprint?

Is it possible to have have virtual function be overridden within Blueprint? I know you can implement BlueprintNativeEvent/BlueprintImplementableEvent ufunctions within blueprint but this prevents the function from being virtual.

For example, say I have some simple classes that I want to implement via Blueprint. then I would be able to do this with those specifiers. However given a more complicated class I may want to code in C++ instead but now when inheriting I would lose out on the virtual functionality.

I have seen some similar questions however most date back at least to 2016. Has there been any functionality implemented into the engine for this? Otherwise I likely just add an additional blueprint only function to be called by the true virtual functions. I’m just trying to avoid the clutter that this would add to my interface.

As far as I know, the intended way to do it is with UFUNCTION(BlueprintNativeEvent), which allows you to write C++ code on its implementation AND to implement it on Blueprints, where the default behavior is to override the C++ implementation.

Although you can call “Add Call on Parent Function” which is the same as calling Super:: in C++.

1 Like