Unreal engine UPROPERTY TsubclassOf 无法识别

Unreal engine UPROPERTY TsubclassOf not recognized

当我使用 TSubclassOf UPROPERTY 创建 ActorComponent c++ subclass 并在蓝图中设置此 class 时,我无法阅读阅读此 属性在 C++ 构造函数中。 在 .h 文件中,我得到了这个:

protected:
    UPROPERTY(EditAnywhere, Category = "Setup")
        TSubclassOf<UBaseSkill> PrimarySkillClass;

而这个在 .cpp 中:

USkillSet::USkillSet()
{
if(PrimarySkillClass.Get())
    {
        UE_LOG(LogTemp, Warning, TEXT("Creating skill"));
    }
    else
    {
        UE_LOG(LogTemp, Error, TEXT("No skill class"));
    }
}

在 BP 中我设置了 class: BP screenshot 所以 PrimarySkillClass.Get() 应该 return 为真,但我在日志中得到 "No skill class"。为什么以及如何解决这个问题?

构造函数是对对象调用的第一个方法,它处于 UObject 生命周期的早期。蓝图和组件的属性、值随后进行初始化。

因此您必须稍后访问它们,可以在 UObject::PostInitProperties() 或在 BeginPlay() 上访问它们,如果对您的目的来说还不算太晚的话。

编辑:关于 UObject Constructor, PostInitProperties and PostLoad

的有趣阅读