Instanced Classes

Try:


UPROPERTY(EditAnywhere, Category = "Abilities")
TSubclassOf<class UAbility> PrimaryAbilityBP;



// add UPROPERTY header if needed
class UAbility* PrimaryAbility;                           // you'll have to spawn this from the BP class above

Or if you’d rather have a stack of abilities a character can have:


UPROPERTY(EditAnywhere, Category = "Abilities")
TArray< TSubclassOf<class UAbility>> AbilityBPs;



// add UPROPERTY header if needed
TArray< class UAbility*> Abilities;                  // spawn each BP and add to this array

This will let you add BPs in the edtior. It won’t be an instanced object, but the static class you can then spawn the object with in BeginPlay or wherever. I think this is the only practical way to do what you want, I am using a similar system.