BindUFunction failed to find function

UFUNCTIONS are used to expose your methods to the Unreal System. I think of it like using Reflection systems in C# although it’s not strictly true.

Best way to decide if you need a UFUNCTION or not:

  1. Do you want to call this method in a blueprint?
  2. Should this method act as an event to call some blueprint code?
  3. Is this method being bound in any way?

If the answer to any of these is yes, add a UFUNCTION. In case 1 and 2, you’ll also need some additional specifiers such as BlueprintCallable or BlueprintImplementableEvent. More information on this is here: UFunctions | Unreal Engine Documentation

Whilst you’re at it, look at UCLASS and UPROPERTY too.