Custom Blueprint Events don't show up in Level Blueprint

When I add a custom event to my classes such as

UFUNCTION(BlueprintImplementableEvent, meta = (FriendlyName = “Event Interactable Toggle”))
virtual void EventInteractableToggle();

It doesn’t show up when I try to add it in the Level Blueprint. When I make a blueprint of that class, it can be added to the event graph, but when I place an instance of that blueprint, then try to add an event for it to the Level Blueprint, it doesn’t show my events. Any help is much appreciated.

BlueprintImplementableEvent is essentially saying that your blueprint class can override it, in the same way that a C++ class could override it by declaring the virtual function in its header.

You’ll notice if you look at the code of Actor that there will be paired functions such as ReceiveDestroyed as a BlueprintImplementableEvent and OnDestroyed as a BlueprintAssignable. The OnDestroyed acts as the event that other blueprints can register a delegate to be notified when the event happens to the actor while ReceiveDestroyed allows it to customize what happens under those circumstances within itself.

This fails compilation

UFUNCTION(BlueprintAssignable, meta = (FriendlyName = “Event Interactable Toggle”))
virtual void EventInteractableToggle();

Unknown function specifier ‘BlueprintAssignable’

BlueprintAssignable are properties that act as delegates. When invoked each registered listener gets notified.

If you look at the OnDestroyed example, you’ll see that the multicast delegate is declared at the top of the file


DECLARE_DYNAMIC_MULTICAST_DELEGATE(FActorDestroyedSignature);

and then the property is declared as a member of the class



UPROPERTY(BlueprintAssignable)
FActorDestroyedSignature OnDestroyed;


So, if I am understanding correctly, BlueprintImplementableEvent is only intended to display within a blueprint of the class in which it is declared, and trans-blueprint communication is handled by calling Broadcast() on delegates. These delegates will show up as events in the level blueprint, and I can use those. Thank you very much, I think I understand now.

Am having a issue with this as well.

I made a new delegate, like this.



DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FGameStateTimeOfDayChanged, uint32, Houer, uint32, Minute, uint32, Sec);


And then i added it to my class like this.



	UPROPERTY(BlueprintAssignable, Category = "Time Of Day")
		FGameStateTimeOfDayChanged OnTimeUpdated;

Then in the method i have in my Game State class to update the time, i vant to Broadcast / “Send” the event. (The method where i use ::Broadcast(,) is only ever called on the server.)



	OnTimeUpdated.Broadcast(CurrentHouer, CurrentMinute, CurrentSeconds);

is a image of the errors am getting when trying to use it, in the Level Blueprint

Edit: So solved this by using int32 and not ****uint32, dont understand way they are not supported.
But the problem now is that i can only see the delegate fire on the server.


Are you not suposed to be able to pick them up client side as well?

Anyone know what am not doing correctly?
Only thing i can think og is binding that delegate back to my GameMode/ GameState function, and then have a NetMulticast function called.
But since the update is happening in e.g: OnRep_Second() i just want the “tick”.

If that makes sense at all.