【UE5随笔】02_宏和说明符

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

5.3 拖入UE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值