美文网首页
2018-10-12 关于虚幻4的C++示例

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

作者: constantine丶 | 来源:发表于2018-10-12 14:38 被阅读0次
    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++示例

          本文链接:https://www.haomeiwen.com/subject/wiqgaftx.html