Whenever I reset the application, any class that is been selected for my TSubclassOf will be lost. Otherwise during the current session I think the blueprint and derived blueprint will maintain the correct class reference.
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "MyGameAttributesComponent.generated.h"
class UMyGameAttributeSet;
USTRUCT(BlueprintType)
struct MYGAMEAPI FMyGameAttributesComponentClassData
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, Category = "MyGame", meta=(GetByRef))
TSubclassOf<UMyGameAttributeSet> AttributesClass;
};
UCLASS( ClassGroup="MyGame", SparseClassDataTypes = MyGameAttributesComponentClassData, meta = (BlueprintSpawnableComponent, PrioritizeCategories = "MyGame MyGame|Internal", AutoCollapseCategories="MyGame|Internal"))
class MYGAME_API UMyGameAttributesComponent : public UActorComponent
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "MyGame")
UMyGameAttributeSet* Attributes = nullptr;
...
}