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() 上访问它们,如果对您的目的来说还不算太晚的话。
的有趣阅读
当我使用 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() 上访问它们,如果对您的目的来说还不算太晚的话。
的有趣阅读