2018-10-12 关于虚幻4的C++示例

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.png
void AMyActor::PostInitProperties()
{
    Super::PostInitProperties();
    DamagePerSecond = TotalDamage / DamageTimeInSeconds;
}

如未向属性提供默认值,引擎将自动把属性设为零(指针类设为 nullptr)。
下图是添加以上 PostInitProperties() 代码后的属性视图。


image.png

你可能感兴趣的:(2018-10-12 关于虚幻4的C++示例)