UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
float DamageTimeInSeconds;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage")
float DamagePerSecond;
};
DamageTimeInSeconds 是设计师可进行修改的属性。
DamagePerSecond 属性是使用设计师设置的计算值。
image.png
特殊宏UPROPERTY() 可以将属性公开到编辑器
Category="Damage" 分类到 Damage
BlueprintReadWrite 此参数使属性为可读取和可编写状态
BlueprintReadOnly 可通过此选项使属性在蓝图中被识别为常量
EditAnywhere 即可在编辑器中对数值进行编辑
VisibleAnywhere 标记意味着属性在虚幻编辑器中为可见状态,但不可进行编辑。
Transient 标记意味着无法从硬盘对其进行保存或加载;它应该为一个派生的非持久值。
注意:这样设置后在用c++产生的蓝图中,在变量中看不到
AMyActor::AMyActor()
{
TotalDamage = 200;
DamageTimeInSeconds = 1.f;
}
AMyActor::AMyActor() :
TotalDamage(200),
DamageTimeInSeconds(1.f)
{
}
在构建函数中设置属性默认值和典型 C++ 类方法一致。
image.pngvoid AMyActor::PostInitProperties()
{
Super::PostInitProperties();
DamagePerSecond = TotalDamage / DamageTimeInSeconds;
}
如未向属性提供默认值,引擎将自动把属性设为零(指针类设为 nullptr)。
下图是添加以上 PostInitProperties() 代码后的属性视图。
image.png
网友评论