Known limitation
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
#define WITH_CUSTOM_DEFINE 1
#if WITH_CUSTOM_DEFINE UFUNCTION(BlueprintCallable, Category = "MyFunction") void TheFunction(); #endif
void AMyActor::TheFunction() {}
Head over to the existing Questions & Answers thread and let us know what's up.