An error message informs the user that a function does not have the BlueprintCallable keyword if the same function is using a  native to blueprint communication keyword.

The function/keywords are behaving correctly, the documentation is some what clear, but the error message is confusing users.

If the function has a native to blueprint communication keyword the error message should prompt them to override the function if it doesn't have a return value. That information can be found under BlueprintImplementableEvent here.

Steps to Reproduce
  1. Create a Blank C++ project
  2. Create a new C++ class derived from Unreal Interface
    1. In the menu bar select Tools > New C++ Class
    2. Select Unreal Interface from the bottom of the Common Classes list then select Next
    3. Select Public then Create Class
    4. In Visual Studio select Reload All
  3. In the Header File below (line 24)'public:' paste the following code then Save: 
    UFUNCTION(BlueprintNativeEvent, BlueprintCallable) 
    void IsBlueprintCallable_Needs_Return_Value_For_BlueprintNativeEvent();
  1. Back in the editor select the 'Recompile and Reload' button in the bottom right
  2. Create then open a new Blueprint Actor
  3. In the Actor's 'Class Settings' under 'Interface > Implemented Interfaces' add the Interface we just made(MyInterface)
  4. In the Actor's Blueprint Tab under Interfaces try to drag the function we created into the Event Graph


Expected Results:
A warning message appears stating that the function lacks a return value, and so must be over ridden via right click > Implement Event.

Actual Results:
A warning message appears reading "This function is not marked Blueprint Callable and cannot be placed in the graph."

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-143549 in the post.

Login to Vote

ComponentUE - Gameplay - Blueprint
Affects Versions5.0
CreatedFeb 23, 2022
UpdatedFeb 28, 2023