虚幻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++枚举创建的既定流程。