UPROPERTY is null

Vetril
Sun, 22 Jul 2018 09:46:09 +0000
Blueprint

Hi guys,

I’m trying to pass to a class that extends UButton a TSubclassOf UPROPERTY that points to a BP class. I then use this UPROPERTY to construct an instance through NewObject.

The problem I am having right now is that for some reason, at runtime the TSubclassOf is NULL and I don’t understand why. I guess it’s something really simple specific to UE4.

Could you have a look and let me know if you spot what I am doing wrong?

This is the (base) class of the classes that should be referenced by TSubclassOf.

// BBEvent.h

class UBBEvent;
class ABBHUD;

DECLARE_EVENT_OneParam(UBBEvent, FBBEvent, UBBEvent *)

UCLASS(Blueprintable, BlueprintType, DefaultToInstanced)

class SALTLAKECITY_API UBBEvent : public UObject
{
	GENERATED_BODY()

	...
};

This is the class that contains the UPROPERTY.

//BBButton.h

class UBBEvent;

UCLASS()

class SALTLAKECITY_API UBBButton : public UButton
{
	GENERATED_BODY()

	public:
		UBBButton(const FObjectInitializer & ObjectInitializer);

		virtual void PostInitProperties() override;

		...

	protected:
		UPROPERTY(Category = "Event Handler", BlueprintReadWrite, EditAnywhere, meta = (AllowPrivateAccess = "true"))
		TSubclassOf<UBBEvent> EventHandlerTemplate;

		UPROPERTY()
		UBBEvent * EventHandler;
};

This is how I try to use the UPROPERTY:

// BBButton.cpp

...

void UBBButton::PostInitProperties()
{
	Super::PostInitProperties();

	if (EventHandlerTemplate)
	{
		UE_LOG(LogTemp, Warning, TEXT("EventHandlerTemplate is not NULL"));
		EventHandler = NewObject<UBBEvent>(this, EventHandlerTemplate);
	}

	OnClicked.AddDynamic(this, &UBBButton::NotifyEventHandler);
}
...

1 post - 1 participant