Set variable type to X extends UObject

I’ve created a C++ class which extends UObject. When creating a variable in blueprints I don’t see that class as an option in the Variable Type drop down. Is there any way to create a variable of this type, or will I just have to use Object and cast to it every time I want to use it?

Further context:
My goal is to proceduraly generate a level by creating an array of tiles, where each tile is an object that knows how to render itself and has data available for the AI to use. At the moment I’m just using an UStruct, but would like to use a custom object instead so I can add additional functionality.

I tried using an UActor instead of UObject, and while that shows up on the variable type drop down, I can’t spawn actors in the construction script, so this isn’t working for me either.

I am able to create an instance of the class using Construct Object From Class, so I know that blueprints is aware of it.

Here’s my super basic class:

UCLASS()
class MY_API UMapTile : public UObject
{
	GENERATED_BODY()
	
public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (DisplayName = "Tile Type", ExposeOnSpawn = true))
		TILE_TYPE type;
};

Just needed to replace UCLASS() with UCLASS(Blueprintable) and now it shows up in the variables dropdown. It’s odd that I was still able to construct the object using Construct Object From Class without this.