Using a custom #define as the coniditon for an #if / #endif that encapsulates a UFUNCTION that is marked as BlueprintCallable will prevent it from being visible in blueprints despite the #if resolving as true.

This does not occur if using already define specifiers, such as WITH_EDITOR

Steps to Reproduce
  1. Create a new blank C++ project
  2. Create a new C++ class based off Actor called MyActor
  3. In the .h file, add the following line at line #7
     #define WITH_CUSTOM_DEFINE 1 
  4. In the same file, add the following lines at line #23, under the Tick function's defintion
    	UFUNCTION(BlueprintCallable, Category = "MyFunction")
    	void TheFunction();
  5. In the .cpp file, add the following lines at line #29, or below everything else
    void AMyActor::TheFunction()
  6. Compile the project (ctrl+shift+B)
  7. Create a blueprint based off MyActor
  8. In the event graph, right-click and type in "The Function"
    Result: The function doesn't appear
    Expected: The function should appear in this list

Have Comments or More Details?

Head over to the existing AnswerHub thread and let us know what's up.

Login to Vote

Won't Fix
Affects Versions4.
Target Fix4.12
CreatedMar 9, 2016
ResolvedMar 14, 2016
UpdatedJun 22, 2016