前言
为了让游戏场景中的各种继承于"Actor"的游戏对象在生命周期中执行自定义逻辑和行为,我们通常需要重写"Actor"类及其派生类中的BeginPlay、Tick函数。
那么如何用C++重写BeginPlay、Tick函数呢,可参考如下步骤。
步骤
- 在头文件中添加如下代码,表示我们要声明函数重写。其中:
"virtual
" 是一个关键字,用于声明虚函数。(虚函数是一种特殊的成员函数,可以在派生类中重写基类中的同名函数)
"override
" 也是一个关键字,用于明确地指示派生类中的成员函数是对基类中的虚函数的重写。当派生类中的函数被标记为 override
时,编译器会检查该函数是否确实覆盖了基类中的虚函数,如果没有正确覆盖,编译器将生成一个错误。
cpp
public:
virtual void BeginPlay() override;
virtual void Tick(float DeltaTime) override;
- 接下来我们需要在cpp中实现BeginPlay、Tick函数。
如果想快速在cpp中定义BeginPlay、Tick函数,我们可以点击"显示可能修补的程序"
点击创建在cpp中的定义
此时在cpp中就自动实现了这两个函数
为了在当前的派生类中调用基类中的BeginPlay、Tick函数,我们可使用"Super"(在 UE 中,通常使用 Super::FunctionName()
来调用父类的同名函数,以确保父类中的逻辑得以执行。)
cpp
void AMyGameMode::BeginPlay()
{
Super::BeginPlay();
}
void AMyGameMode::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}