[4.7.6] Can't override Blueprint function without return value

Hi there,

Short and painful :wink:
If a function in a parent blueprint hasn’t a return value, it’s not possible to override it in a derivated blueprint.
If you press the override button in blueprint editor, it only lists functions of super class that return something.

UE4 considers functions of super class as events (which they arent’t, because in this case we would be allowed to do asynchronous stuff there).

That’s very annoying to work around currently: Instead of just overriding them like expected you have to catch an event with same name in event graph and add a call to parent event. That’s very confusing.

Hey ,

This was a known issue, but it’s been fixed in 4.8. If you see same behavior in 4.8 Preview, please let us know. Thanks!

That’s great to read, many thanks. :slight_smile:

I see old behavior (overridden functions becoming events) in 4.8.3.

Hi JanSordid,

That’s not actually a bug, but intended. bug was reporting was that a function in Parent BP that didn’t have an output would not show up in list for Overridable functions in My Blueprint tab inside its Child BP. That has been fixed.

Hmm, but isn’t a event asynchrounly handled, unlike a function…?

Under hood, events are implemented as functions. It dates way back, when Blueprint system was still in its infancy. One of only ways we have to discern between two is presence of a return value.

This was for native C++ functions that were exposed to Blueprints. unfortunate side effect of this is that it also affected functions added through Blueprints, something that probably wasn’t originally thought of.

Events are triggered just as a function would be, only repercussion is that event is run in Event Graph: it utilizes graph’s persistent state, rather than one that is reset with each function call. This means you can’t use things like local variables, etc.

I talked with devs about it, and they said this is something that’s plagued them for a while and they want to correct, as it’s super confusing. I’ll follow up to see if we have any specific plan for that. For now, though, it’s just way it’s set up in this instance =/

Hi ,

many thanks for making this clear for me. If that will change some day in future I can live with that.

Only one thing: Would it be possible to declare specific events as private like a function (it should not be possible to call them from outside this class)?

No problem!

Currently we can’t set a custom event to private like you can with Access Specifier in functions. There’s an existing feature request for that entered recently (UE-19803), and I’ll keep an eye on it and post here if I see it get implemented.

Many thanks (see also Feature suggestion: Private event nodes - Programming & Scripting - Epic Developer Community Forums)

Cool, thanks, I’ll get someone to put that in today.

I’ll follow up to see if we have any specific plan for that.

Did any specific plan come of this?