【UE5 C++初学笔记】02.UPROPERTY和UFUNCTION
·
目录
关于BlueprintImplementableEvent:
U++中属性使用UPROPERTY宏来定义属性元数据和变量说明符,使用UFUNCTION宏来声明UFunction,并为UFunction定义一些说明符,UPROPERTY和UFUNCTION分别让属性与函数能够被UE反射系统识别。
一、UPROPERTY
实践了解一下比较常见的说明符的作用
以上属性在Instance中细节面板可见:

在类默认面板中:

在蓝图中搜索Category可以看到在TEST目录下方

Blueprint:

Config说明符:标记为 Config的属性其值不会被保存在蓝图资产或C++类的默认值中,而是被保存到指定的项目配置文件中。
用例:
UCLASS(config=Game) // 指定这个类的配置项保存在 Game 类型的配置文件中(即 DefaultGame.ini 等)
class YOURGAME_API UYourGameSettings : public UObject
{
GENERATED_BODY()
public:
UYourGameSettings();
// 这个属性将从配置文件中读取
UPROPERTY(Config, EditAnywhere, Category = "Settings")
float PlayerWalkSpeed;
// 这个属性也将从配置文件中读取,并且可以在编辑器中编辑,但编辑的是配置文件中的值
UPROPERTY(Config, EditAnywhere, Category = "Settings")
int32 MaxNumberOfPlayers;
};
EditFixedSize为固定大小的数组,本例中初始化
![]()
TArray容量为3,不可改变。
二、UFUNCTION
关于纯函数的UFUNCTION说明符效果:


关于BlueprintImplementableEvent:
1.不需要++实现,可在C++中调用,可传递参数
2.蓝图可实现,可不实现,没实现则调用时什么都不发生
3.命名使用有意义的名称,如 OnXXX, HandleXXX
4.考虑蓝图没实现的情况
声明:
UFUNCTION(BlueprintImplementableEvent, Category="Events")
void OnCustomEvent();
调用:
void AUFUNCTION_Test_Actor::BeginPlay()
{
Super::BeginPlay();
OnCustomEvent();
}
实现:


关于BlueprintNativeEvent:
在头文件中声明:
UFUNCTION(BlueprintNativeEvent, Category="Events")
void OnCustomEvent();
virtual void OnCustomEvent_Implementation();
实现:
void AMyActor::OnCustomEvent_Implementation()
{
UE_LOG(LogTemp, Warning, TEXT("调用了 C++ 默认实现"));
// 默认逻辑写这里
}
调用:
void AMyActor::TriggerEvent()
{
OnCustomEvent(); // 优先调用蓝图实现,否则调用 C++ 默认实现
}
蓝图中调用、重载:

可以调用C++父类实现

更多推荐


所有评论(0)