天天看点

用虚幻4C++使用结构体和枚举

        虚幻4C++和日常使用的C++差别很大,里面众多的类型和方法都被虚幻官方给重写了,甚至称之为U++亦不为过,这里记录一些如何用UE4C++来实现引擎里的结构体和枚举的创建。

用结构体来创建角色的各种信息是常见的操作,但这里我想创建一个技能的详细信息,包括技能的消耗,技能的类型,技能的伤害,技能的等级,技能的CD等等

//USTRUCT,可以认为是UE4C++中用结构体的一种前置标识符,和UPROPERTY资产标记类似

USTRUCT(BlueprintType)

struct FGameplayAbilityInfo

{

    GENERATED_BODY()

public:

    //技能冷却

    UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="AbilityInfo")

    float CoolDown;

    //技能消耗

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AbilityInfo")

    float Cost;

    //技能消耗类型

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AbilityInfo")

    ECostType CostType;

    //技能等级

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AbilityInfo")

    int32 abilitylevel;

    //技能类型

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AbilityInfo")

    TSubclassOf<UMyGameplayAbilitynfo>AbilityClass;

    //无参构造

    FGameplayAbilityInfo();

    //有参构造

    FGameplayAbilityInfo(float CoolDown,float Cost,ECostType CostType,int32 abilitylevel, TSubclassOf<UMyGameplayAbilitynfo>AbilityClass);

};

关于技能的详细信息在结构体中罗列完成后,要注意,技能消耗类型这里罗列的是一个枚举,因此我们需要再创建一个枚举。

UENUM(BlueprintType)

enum class ECostType :uint8

{

    HP,

    MP,

    Strength

};

枚举里创建了三个消耗类型,HP,MP,和Strength,结构体和枚举都是在头文件中创建即可,记住枚举后的uint8是不可或缺的,这是C++枚举创建的既定流程。

继续阅读