用TSubclassOf UPROPERTY创建ActorComponent c ++子类并在蓝图中设置此类后,我无法在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中,我正在设置课程: BP screenshot 因此PrimarySkillClass.Get()应该返回true,但是我在日志中收到“无技能类别”。为什么以及如何解决这个问题?
答案 0 :(得分:1)
构造函数是有史以来第一个在对象上调用的方法,这是在UObject生命早期开始的。然后,初始化属性,蓝图中的值和组件。
因此,如果出于您的目的还不算太晚,则必须稍后在UObject::PostInitProperties()或BeginPlay()上访问它们。
编辑:关于UObject Constructor, PostInitProperties and PostLoad的有趣读物