Unreal CPP中的事件

事件系统可以允许我在一个位置声明事件的调用,而在另一个地方实现这个事件,合理的使用事件系统可以使代码逻辑更加清晰。

声明事件

你可以在一个Unreal类 (UObject) 里声明事件,本质是声明一个函数,不过你可以先不去实现这个函数的具体定义,像这样:

UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void TestBegin();

如此可以声明一个允许在蓝图中可以实现定义的事件,这样我们可以在蓝图里实现它的具体定义,BlueprintImplementableEvent是用来标志这是一个事件,当然还有别的事件声明方式,不过这是我常用的方式,另外值得一提的是,事件函数里,是可以声明参数的。

调用事件

声明之后确保,在一个位置调用该事件,可以是使用CPP,也可以使用蓝图,但总之需要将其调用,比如:

// Called when the game starts or when spawned
void APlayerPawn::BeginPlay()
{
Super::BeginPlay();
TestBegin();
}

这里我就在BeginPlay()中调用了这个事件,这样当BeginPlay()被调用时就会调用TestBegin()

定义事件

最重要的一步就是事件的定义,这里就可以去蓝图中实现事件的具体逻辑了。