1 在头文件声明变量
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category= "Damage")floatDamageTimeInSeconds;
UPROPERTY(BlueprintReadWrite, VisibleAnywhere, Transient, Category= "Damage")float DamagePerSecond;
UPROPERTY() 宏命令 定义变量的属性
EditAnywhere 在UI编辑器中可编辑
BlueprintReadWrite 在蓝图中可读写
Category = "Damage" 在编辑器中以组“Damage”显示
2 变量初始化两种方式
AMyActor::AMyActor() : TotalDamage(200),
DamageTimeInSeconds(1.f)
{
}
AMyActor::AMyActor()
{
ChangeValue();}
AMyActor::ChangeValue()
{
TotalDamage = 200;
DamageTimeInSeconds = 1.f;
}
3 此时如果在编辑器中修改变量
TotalDamage
DamageTimeInSeconds
值,DamagePerSecond的值并不会随之改变
需要添加edit回调
#if WITH_EDITOR
void AMyActor::PostEditChangeProperty(FPropertyChangedEvent&PropertyChangedEvent)
{changeValue();
super::PostEditChangeProperty(PropertyChangedEvent);
}#endif
4 c++ wizard 中方法如果想要在Blueprint 中显示,在方法声明前添加宏
UFUNCTION(BlueprintCallable, Category="Damage")void CalculateValues();
5 c++ 调用Blueprint方法(未测试)
UFUNCTION(BlueprintImplementableEvent, Category="Damage")void CalledFromCpp();
6 Blueprint可override方法(未测试)
UFUNCTION(BlueprintNativeEvent, Category="Damage")void CalledFromCpp();
This version still generates the thunking method to call into the Blueprint VM. So how do you provide the default implementation? The tools also generate a new function declaration that looks like _Implementation(). You must provide this version of the function or your project will fail to link. Here is the implementation code for the declaration above.
voidAMyActor::CalledFromCpp_Implementation()
{//Do something cool here
}