Why isn't my function visible to blueprint?

I’m trying to make an Interaction component that can be attached to any object the player is capable of using. To facilitate that, UInteraction needs an event that external methods can bind to, so when its event fires, anything listening to it executes as well. I tried doing this by simply declaring a function with the BlueprintImplementableEvent specifier in the macro:

UFUNCTION(Category = "Interaction", BlueprintImplementableEvent)
void InteractedWith();

However, UInteraction references in the event graph have no knowledge of my function, so I can’t bind anything to it. I tried doing the same thing with delegates, only to find that they weren’t visible either:

DECLARE_EVENT_OneParam(UInteractive, FInteractionEvent, AActor*);
FInteractionEvent InteractedWith;

I’m hoping there is a blazingly simple mistake I’m making here, is there an obvious reason why my methods aren’t visible to blueprint?

I’m not a 100% sure as I’m new to the C++ side but if I’m not mistaken, in order to see it in blueprints as a node doesn’t it need to pass “BlueprintCallable” as a parameter?

Here is a nice small write-up from Rama: A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums

Hope this helps! If it works, accepting the answer as correct is always appreciated! :slight_smile:

Jesse

Hey, thank you for the feedback! I don’t know why this is, but it turns out I could use UPROPERTY for multicast delegates, but not for simple one-parameter delegates. The following did exactly what I needed; thank you again ^^

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FInteractionDelegate);

UPROPERTY(BlueprintAssignable, Category = "Interaction")
FInteractionDelegate InteractedWith;