1、结构体

  • 在虚幻C中结构体和普通C结构体构建方式相同,但是如果希望构建于蓝图交互的结构体则需要额外的处理!
  • UE支持结构体的构建和使用,但是由于蓝图特殊,普通的结构体定义无法被蓝图访问,我们需要借助USTRUCT宏进行构建UE中的结构体

语法:

1
2
3
4
5
6
	USTRUCT(BlueprintType)
struct FBoxPosition {
GENERATED_USTRUCT_BODY()
int32 x;
int32 y;
};

注意:结构体名称必须使用 F 开头,必须带两个操作宏,如需要在蓝图中使用,需要加入BlueprintType标记

2、枚举

语法与C++相同,总的来说可以使用以下两种方式进行构建

添加宏记可以使枚举在蓝图中也可使用

第一种:空间构建方式

1
2
3
4
5
6
7
UENUM(BlueprintType)
namespace GColor {
enum Type {
Blue,
Red
};
}

使用:

1
GColor::Type::Blue;

特点:使用空间名称作为访问依据,可以更清晰的标明意图,方便使用。

第二种:直接创建

1
2
3
4
5
UENUM(BlueprintType)
enum class ZColor : uint8 {
ERed,
EBlue
};

使用:

1
ZColor::EBlue;

定义枚举对象:

1
2
UPROPERTY(EditAnywhere)
TEnumAsByte<GColor::Type> Color;

定义枚举

1
2
UPROPERTY(EditAnywhere)
GColor Color;

为枚举在蓝图中创建别名

可以帮助枚举名进行蓝图别名创建,方便在蓝图中寻找操作(空间声明枚举的方式不适用)

1
2
3
4
UENUM(BlueprintType)
enum class ZColor : uint8 {
Game UMETA(DisplayName = "GC")
};