UE5宏和说明符
1. 属性 UPROPERTY
UPROPERTY
宏用于自动化属性的序列化、编辑器可见性和内存管理。
UPROPERTY(<Specifiers01>, <Specifiers02>)
1. 访问权限说明符
说明符 | 含 义 |
---|---|
VisibleAnywhere |
在属性窗口中只读。 |
VisibleInstanceOnly |
仅在实例中可见。 |
VisibleDefaultsOnly |
仅在默认属性窗口中可见。 |
EditAnywhere |
可在属性窗口中编辑。 |
EditInstanceOnly |
仅在实例中可编辑。 |
EditDefaultsOnly |
仅在类默认对象(CDO)中可编辑。 |
2. 配置和保存说明符
说明符 | 含 义 |
---|---|
BlueprintReadOnly |
在蓝图中只读。 |
BlueprintReadWrite |
在蓝图中可读写。 |
Config |
从配置文件加载/保存。 |
GlobalConfig |
在全局配置文件中保存。 |
3. 分类和标签说明符
说明符 | 含 义 |
---|---|
Category="CategoryName" |
属性的分类。 |
Meta=(ToolTip="Your Tooltip Text") |
提供工具提示。 |
4. 内存管理说明符
说明符 | 含 义 |
---|---|
Transient |
不在保存游戏状态时序列化。 |
DuplicateTransient |
复制操作时不复制。 |
5. 网络相关说明符
说明符 | 含 义 |
---|---|
Replicated |
在网络游戏中复制此属性。 |
ReplicatedUsing=FunctionName |
设置复制此属性时调用的函数。 |
6. 扩展说明符
说明符 | 含 义 |
---|---|
meta=(ExposeOnSpawn="ExposeOnSpawnValue") |
该属性将在对象(通常是一个Actor或其组件)被创建或生成时在编辑器中暴露出来,使其可以在生成时进行设置。 |
2. 方法 UFUNCTION
UFUNCTION
宏用于标记函数,使其可以与引擎的各种系统(如蓝图、网络系统等)交云。
UFUNCTION(<Specifiers01>, <Specifiers02>)
1. 蓝图相关说明符
说明符 | 含 义 |
---|---|
BlueprintCallable |
允许在蓝图中调用该函数。 |
BlueprintPure |
标记为纯函数,在蓝图中不需要执行节点。 |
BlueprintImplementableEvent |
在C++中声明,让蓝图实现。 |
BlueprintNativeEvent |
在C++中提供实现,蓝图也可以重写。 |
2. 分类和标签
说明符 | 含 义 |
---|---|
Category="CategoryName" |
函数的分类。 |
DisplayName="Nice Name" |
自定义函数在编辑器中显示的名称。 |
Meta=(ToolTip="Your Tooltip Text")" |
提供工具提示。 |
3. 事件和委托
说明符 | 含 义 |
---|---|
MulticastDelegate |
多播委托。 |
Delegate |
委托。 |
4. 网络相关说明符
说明符 | 含 义 |
---|---|
Server |
仅在服务器上运行的函数。 |
Client |
仅在客户端上运行的函数。 |
NetMulticast |
在所有连接的客户端和服务器上运行。 |
Reliable |
网络调用可靠传输(不会丢失,但可能重复)。 |
Unreliable |
网络调用不可靠传输(可能丢失)。 |
3. 枚举 UENUM
1. 蓝图相关说明符
说明符 | 含 义 |
---|---|
BlueprintType |
允许枚举在蓝图中使用。没有这个说明符,枚举将仅在C++中可用。 |
2. 元数据说明符
说明符 | 含 义 |
---|---|
DisplayName |
为枚举值提供一个友好的显示名称。 |
Meta=(ToolTip="Your Tooltip Text")" |
提供额外的元数据,比如自定义标签或工具提示。 |
3. 存储类型说明符
说明符 | 含 义 |
---|---|
byte |
使用一个字节大小来存储枚举。如果未指定,则默认使用更大的整数类型。 |
4. 声明示例
UENUM(BlueprintType)
enum class EMyEnum : uint8
{
Value1 UMETA(DisplayName = "Value One"),
Value2 UMETA(DisplayName = "Value Two"),
Value3 UMETA(DisplayName = "Value Three")
};
Tips: 每个枚举值可使用 UMETA
宏来提供自定义的显示名称。
5. 在属性中使用
#include "MyEnum.h" // 假设枚举定义在这个头文件中
UCLASS()
class MYGAME_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// 将枚举用作属性
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "EMyEnum")
EMyEnum MyEnumProperty;
};
4. 结构体 USTRUCT
USTRUCT
宏用于定义结构体,使其能够与引擎的各种系统(如蓝图、序列化系统等)交互。
USTRUCT(<Specifiers01>, <Specifiers02>)
1. 蓝图相关说明符
说明符 | 含 义 |
---|---|
BlueprintType |
允许结构体在蓝图中使用。如果没有这个说明符,结构体将仅在C++中可用。 |
Blueprintable |
允许结构体被用作蓝图中的基类。 |
2. 元数据说明符
说明符 | 含 义 |
---|---|
Meta=(ToolTip="Your Tooltip Text")" |
提供额外的元数据,比如自定义标签或工具提示。 |
3. 序列化和存储说明符
说明符 | 含 义 |
---|---|
Atomic |
当整个结构体需要作为一个单元进行序列化时使用。 |
Immutable |
表明这个结构体一旦创建便不可更改。 |
4. 可见性和编辑说明符
说明符 | 含 义 |
---|---|
HideDropdown |
在蓝图编辑器中隐藏此类型的下拉菜单。 |
5. 其他说明符
说明符 | 含 义 |
---|---|
DisplayName |
为结构体在编辑器中提供一个自定义的显示名称。 |
6. 示例
USTRUCT(BlueprintType)
struct FMyStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Example")
int32 MyInt;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Example")
FString MyString;
};
5. 数据表格 DataTable
5.1 声明结构体
#include "CoreMinimal.h"
#include "Engine/Classes/Engine/DataTable.h"
#include "UObject/NoExportTypes.h"
#include "MyObject01.generated.h"
USTRUCT(BlueprintType)
struct FMyDateTableStruct : public FTableRowBase
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyTestDateTable")
float health;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyTestDateTable")
FString name;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyTestDateTable")
int32 level;
};
5.2 创建表格
需要另存为 *.csv
文件。