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
文件。