目录
枚举(UENUM)
第一种:使用命名空间
C++
复制代码
UENUM(BlueprintType)
namespace MyEnumType
{
enum MyCustomEnum
{
Type1,// 或者使用带 DisplayName别名 ==> Enum1 UMETA(DisplayName = "Type1"),
Type2,
Type3,
}
}
C++
复制代码
//在蓝图中声明
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyEnumType")
TEnumAsByte<MyEnumType::MyCustomType> MyEnumType;
第二种:继承uint8通过申明class类别名来替代
C++
复制代码
UENUM(BlueprintType)
enum class MyEnumType2 : uint8
{
Enum1 UMETA(DisplayName = "Type1"),
Enum2 UMETA(DisplayName = "Type2"),
Enum3 UMETA(DisplayName = "Type3"),
Enum4 UMETA(DisplayName = "Type4"),
};
C++
复制代码
//在蓝图中声明
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyEnumType2")
TEnumAsByte<MyEnumType2> MyEnumType2;
结构体(USTRUCT)
复制代码
// 暴露给蓝图
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="MyStructType")
int32 Age;
// 不暴露给蓝图
int32 Age;
// 蓝图图表无法访问此UObject指针,但是指针对UE的反射、智能指针和垃圾回收系统可见。
UPROPERTY()
UObject* ObjectPointer;
C++
复制代码
//注意,定义结构体名称前要加F前缀,不然编译不通过。
USTRUCT(BlueprintType)
struct FMyCustomStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
FString ID;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
FString Name;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
int32 Age;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
float Height;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
bool IsMan;
};
C++
复制代码
//结构体创建数据表格,需继承FTableRowBase
USTRUCT(BlueprintType)
struct FMyCustomStruct:public FTableRowBase
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
FString ID;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
FString Name;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
int32 Age;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
float Height;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyStructType")
bool IsMan;
};
C++
复制代码
//在蓝图中声明
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyExposeOnSpawn", meta = (ExposeOnSpawn = "ExposeOnSpawnValue"))
FMyCustomStruct MyCustomStruct;