My C++ Class is not visible in blueprint

I created a C++ class which extends UObject called MRPG_BaseAbility. I have another class with a TArray of MRPG_BaseAbility and a get accessor to grab the array. In blueprint, I’m creating a function for my HUD to grab the TArray of MRPG_BaseAbility and populate user widgets with information about each ability.

My function has no problem getting the TArray, looping through the elements, and allowing me to access each individual MRPG_BaseAbility (So my blueprint knows of my class in some way). I want to pass each individual MRPG_BaseAbility to a function in my user widgets to populate the information I need. For some reason I cannot use MRPG_BaseAbility as an input to my function. My other C++ classes which extend things like Actor or player controller or character etc can be used with no issues. Why would MRPG_BaseAbility not be showing up? Do I need to have it extend something like Actor even if I don’t plan to spawn it into the world?

MRPG_BaseAbility Class:

1 Like

I finally solved my problem, it took a few hours of googling before I could find the answer I was looking for.

If anyone else has the same issue, it seems that by default, classes which implement UObject are not able to be parented by blueprints or made into variables by blueprints. You have to use the Blueprintable (for blueprint inheritence) and BlueprintType (For blueprint variables) in the UCLASS() macro to gain access to this functionality.

I didn’t have this issue with my other classes which inherited from AActor or PlayerCharacter etc, because those classes are already Blueprintable and BlueprintType. So I guess it wasn’t necessary for those specifiers to be included in their UCLASS(), but for UObjects they must be included.

7 Likes