Event bound to dispatcher breaks after a while

I have 2 widget blueprints. The first contains an event dispatcher + a call to the event dispatcher. The second contains a bound function to the event dispatcher in the first.

The problem is that after a while (~30 seconds) the Event Dispatcher in the first widget blueprint no longer calls the bound function in the second.
Binding another function inside the first widget blueprint to the dispatcher works and never breaks. The event dispatcher fires properly even after the bound function no longer gets called and I never use the unbind or unbindall on the dispatcher.

I’ve tried everything I could think of, even having the reference to the instance of the first widget blueprint inside the game instance, but I still get the problem.

Any help would be appreciated.

Never experienced it - I’ve been relying on them for years and my first gut feeling is that something else is causing this.

What are the chances you *accidentally *create an extra widget that does not hook up to anything?

Pretty much null. I have data on the widget and if the widget was different I would notice it instantly since it would reset the data.

One important thing though is that the Dispatcher is actually a delegate in a UObject on the C++ side. But if that object was different, I would also notice it because it also has data in it used by the widget that also doesn’t get reset. Also, events I bind on the delegate from inside the widget never breaks.

It’s found in a .h:


DECLARE_DYNAMIC_MULTICAST_DELEGATE(FSomeDelegate);

UCLASS(BlueprintType, CustomConstructor)
class SOMEMODULE_API USomeTickableObject : public UObject, public FTickableGameObject
{
    GENERATED_BODY()

    ...

    UPROPERTY(BlueprintAssignable, Category = "Some Module")
    FSomeDelegate OnSomeEventDelegate;
}

and then in the .cpp it’s called:


OnSomeEventDelegate.Broadcast();