ue-blueprint-cpp-integration

Exposes Unreal Engine C++ classes, functions, and properties to Blueprint via UHT reflection specifiers.

55|5|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-blueprint-cpp-integration-kevinpbuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ue-blueprint-cpp-integration
Source: https://github.com/kevinpbuckley/unreal-engine-skills/tree/main/skills/core/ue-blueprint-cpp-integration
Command: npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-blueprint-cpp-integration-kevinpbuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Choosing the wrong UFUNCTION, UPROPERTY, or UCLASS specifiers in Unreal Engine C++ causes Blueprint nodes to not appear, properties to stay hidden, or events to never fire. This Skill provides the correct reflection specifier patterns, meta tags, and dispatch rules so C++ code exposes a clean, designer-facing API to Blueprint. ## Core Features & Use Cases - Function exposure: Correct usage of BlueprintCallable, BlueprintPure, BlueprintImplementableEvent, and BlueprintNativeEvent, including the Implementation pattern and calling conventions. - Property exposure: EditAnywhere/EditDefaultsOnly/VisibleAnywhere combined with BlueprintReadWrite/BlueprintReadOnly, plus meta tags like ExposeOnSpawn, ClampMin/ClampMax, and AllowPrivateAccess. - Interfaces and libraries: Blueprint-implementable interfaces with Execute dispatch, TScriptInterface storage, Blueprint function libraries, TSubclassOf and soft references, and BlueprintAssignable delegates. - Use Case: A gameplay programmer writes a C++ health component and needs designers to tweak MaxHealth in the Details panel, bind to an OnHealthDepleted event in the Event Graph, and override an OnAlert behavior in a Blueprint subclass — this Skill gives the exact specifiers and call patterns for each. ## Quick Start Ask the agent to expose a C++ actor's health property and damage function to Blueprint with the correct UPROPERTY and UFUNCTION specifiers for Unreal Engine 5.8.

Frequently Asked Questions about ue-blueprint-cpp-integration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I expose a C++ function to Blueprint in Unreal Engine?

Mark the function with UFUNCTION(BlueprintCallable) for side-effecting calls or UFUNCTION(BlueprintPure) for value queries without exec pins. Always add a Category so the node appears in a meaningful group in the Blueprint context menu.

What is the difference between BlueprintImplementableEvent and BlueprintNativeEvent?

BlueprintImplementableEvent has no C++ body; UHT generates the thunk and Blueprint defines the behavior. BlueprintNativeEvent requires a C++ default named FuncName_Implementation, which Blueprint may optionally override.

Why does Cast to my interface return null for Blueprint classes?

Cast<IInterface> only works when the interface is implemented in C++, because Blueprint implementors are not added to the C++ vtable. Use Implements<UInterface>() to check and IInterface::Execute_FuncName(Object) to call, which routes to Blueprint overrides.

How do I make a C++ property editable in the Blueprint Details panel?

Use UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="...") on the member. EditAnywhere allows editing on class defaults and instances, while BlueprintReadWrite generates get and set nodes in the graph.

Why does my private UPROPERTY with BlueprintReadWrite fail to compile?

UHT rejects BlueprintReadOnly or BlueprintReadWrite on private members unless you add meta=(AllowPrivateAccess="true"). Adding that meta tag exposes the private member to Blueprint while keeping it private in C++.

When should I avoid BlueprintPure functions?

Avoid BlueprintPure for expensive operations like world queries or array scans, because Blueprint re-evaluates the node for every wire connected to its output. Cache the result in a variable or switch to BlueprintCallable instead.