Description

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
    #if WITH_CUSTOM_DEFINE
    	UFUNCTION(BlueprintCallable, Category = "MyFunction")
    	void TheFunction();
    #endif
    
  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 existingAnswerHub thread and let us know what's up.

1
Login to Vote

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