虚幻引擎UPROPERTY TsubclassOf无法识别

时间:2018-10-28 19:50:47

标签: components unreal-engine4

用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,但是我在日志中收到“无技能类别”。为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

构造函数是有史以来第一个在对象上调用的方法,这是在UObject生命早期开始的。然后,初始化属性,蓝图中的值和组件。

因此,如果出于您的目的还不算太晚,则必须稍后在UObject::PostInitProperties()或BeginPlay()上访问它们。

编辑:关于UObject Constructor, PostInitProperties and PostLoad的有趣读物