UCLASS()class AMyActor : public AActor
{
GENERATED_BODY()
public:
//Category是类别(编辑器的选项卡,或者是蓝图的类别)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
float DamageTimeInSeconds;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage")
float DamagePerSecond;
};
新建以MyActor为基类的蓝图类,并在场景中生成对象
如果在编译后再次修改将不会变化
![](https://img.haomeiwen.com/i13450260/461d49cc5de156f8.png)
UFUNCTION(BlueprintCallable, Category="Damage")
void AMyActor::CalculateValues()
{
DamagePerSecond = TotalDamage / DamageTimeInSeconds;
}
![](https://img.haomeiwen.com/i13450260/b04bd79672484cf6.png)
//从加载过程初始化属性后计算我们每秒的损伤值。编辑器中的运行时更改不计算在内。
void AMyActor::PostInitProperties()
{
Super::PostInitProperties();
CalculateValues();
}
//Engine在编辑器中更改后会通知目标对象
#if WITH_EDITOR
void AMyActor::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
CalculateValues();
Super::PostEditChangeProperty(PropertyChangedEvent);
}#endif
网友评论