Course contentsShow
← Unreal Engine Game Development
Lesson 47 of 8801. Foundations and Editor WorkflowFree lesson

Defining Blueprint Callable Functions

Students will implement UFUNCTION macros to allow C++ logic to be executed directly from Blueprint graphs.

In this lesson, you will learn how to bridge the gap between C++ logic and the visual scripting world by defining BlueprintCallable functions.

The Bridge Between C++ and Blueprints

Up until now, we’ve focused on the C++ side of things. However, Unreal Engine’s true power lies in how we let designers interact with our hard work. A UFUNCTION(BlueprintCallable) is a decorator that tells the Unreal Reflection System: "Make this function available as a node in the Blueprint graph."

Without this specifier, your C++ function remains hidden from the Event Graph. With it, you create a seamless workflow where the heavy, performance-critical logic happens in C++, and the sequencing and triggering happen in a user-friendly visual format.

Implementation

To expose a function, simply add the BlueprintCallable specifier inside the UFUNCTION macro above your function declaration in your header file (.h). You must also provide a Category to help organize your function in the Blueprint node menu.

UCLASS()
class MYPROJECT_API AMyCharacter : public ACharacter
{
    GENERATED_BODY()

public:
    // This node will now appear in the Blueprint Editor
    UFUNCTION(BlueprintCallable, Category = "Player Actions")
    void PlaySpecialAbilityEffect();
};

Why it Matters

Think of BlueprintCallable as creating a "public API" for your class. When you mark a function this way, you are essentially defining a block that any developer or designer can drag and drop into their graphs. This is perfect for utility functions like ResetPlayerStats() or TriggerCustomSound(). It empowers non-programmers to utilize your systems without needing to touch a single line of C++ code.

When you compile your code, Unreal scans your classes for these decorators, updates the Reflection System, and instantly makes those functions available in the right-click context menu of the Blueprint Editor.

Key Takeaway: The BlueprintCallable specifier is the essential gatekeeper that converts private C++ logic into accessible, visual nodes for use within your game’s Blueprint graphs.