0

我很困惑如何

UFUNCTION(BlueprintNativeEvent, Category = Collision) void OnOverlapBegin(UPrimitiveComponent* Comp, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

virtual void OnOverlapBegin_Implementation(UPrimitiveComponent* Comp, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)

作品。

4

1 回答 1

2

本质上,这是一个关于BlueprintNativeEvent函数说明符的问题。因此,您在那里拥有的顶级函数定义将在类的头文件中。

UFUNCTION(BlueprintNativeEvent, Category = Collision) 
void OnOverlapBegin(UPrimitiveComponent* Comp, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

并且由于该函数说明符,该函数将被一个蓝图类覆盖,该蓝图类是定义该函数的任何 C++ 类的子类。现在,这里的关键字表示. 因此,蓝图覆盖此功能在技术上是可选的。但是,该函数仍可能被蓝图或 C++ 类中的其他地方使用。因此,如果没有上述函数的重写版本,则使用该函数的默认实现。您将在头文件中定义默认方法,并使用问题下半部分的签名在 C++ 文件中实现该方法。

virtual void OnOverlapBegin_Implementation(UPrimitiveComponent* Comp, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

虽然,我相信你甚至不需要在你的头文件中定义这个函数来实际实现这个函数。所以你可以直接进入你的 C++ 类并OnOverlapBegin像这样实现默认函数,

void RandomClass::OnOverlapBegin_Implementation(UPrimitiveComponent* Comp, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 
{
    // called if not overridden by blueprint or subclass
}

单击此处了解有关虚幻引擎中接口的更多信息。

单击此处此处此处,了解有关 BlueprintNativeEvent 函数说明符的更多信息。

于 2020-07-30T00:33:58.220 回答