UE 5.4+ Delegate Binding/Unbinding Bug with Float Parameters in Blueprints (float→double proxy mismatch)

Summary

I’ve tracked down a subtle issue in UE 5.4 (still reproducible in 5.7 preview) where unbinding from a multicast delegate in Blueprints silently fails if the delegate signature involves float parameters.

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Assets

Steps to Reproduce

  1. Declare a multicast delegate in C++:

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTestFloatDelegate, float, FloatParam);
UPROPERTY(BlueprintAssignable)
FTestFloatDelegate OnTestFloatDelegate;

  1. In a Blueprint:

Create two Bind Event to OnTestFloatDelegate nodes.
Each uses its own Create Event node to bind the same BP custom event (float input).
Press a key to bind both (or bind on BeginPlay).

  1. Hit a breakpoint to look at delegate invocation list in a debugger

Expected Result

See only one element in delegate’s InvocationList.

Observed Result

See two elements in delegate’s InvocationList CREATEDELEGATE_PROXYFUNCTION_0 and CREATEDELEGATE_PROXYFUNCTION_1.

Platform(s)

Windows

Upload an image


CPP_delegate.png

Additional Notes

Why it happens

In UE 5.4+, BP float is actually double-precision.
Binding a BP event with float params generates conversion wrappers (proxy functions).
Each Create Event node gets its own proxy (CREATEDELEGATE_PROXYFUNCTION_N).
Delegate unbinding compares function identity, so unbinding with a different CreateEvent node targets a different proxy and fails.

Impact

Delegate Unbind is unreliable if you use multiple CreateEvent nodes with the same BP function.
Easy to leak or double-bind delegates in real projects without realizing.

Workarounds

Always reuse the same CreateEvent node for bind/unbind.
Use event/function that is created by the CreateEvent node (by using [Create a matching function/event] button in the CreateEvent node).
Or, bind/unbind in C++ where you can keep a stable delegate handle.
Or, switch delegate params to double when exposing to BP (not ideal, but avoids float→double proxy).

Can anyone from Epic confirm if this is intended behavior, or if it’s a regression? Any recommended best practice for Blueprint-accessible delegates with float params in UE 5.4+?