如何在C ++中覆盖BlueprintNativeEvent函数?

时间:2019-03-21 00:52:54

标签: c++ polymorphism unreal-engine4 unreal-blueprint

我想在C ++的派生类中实现标有BlueprintNativeEvent的函数的一部分,而其他人则在派生的Blueprint类中实现该函数的部分。

但是,该函数似乎不是virtual函数,因此我不知道如何在C ++中override使用它(尽管在Blueprint中它可以工作)。来自GameplayAbilitySystem的示例:

UFUNCTION(BlueprintNativeEvent, Category="Calculation")
float CalculateBaseMagnitude(const FGameplayEffectSpec& Spec) const;

如何在C ++的派生类中覆盖它?

1 个答案:

答案 0 :(得分:0)

在编译之前,UnrealHeaderTool为基类中的virtual生成BlueprintNativeEvent函数。上面的示例如下:

virtual float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const;

因此,在派生的C ++类中,重写(并实现)在C ++中照常运行的功能:

class PROJECT_API UGMMCCustom : public UGameplayModMagnitudeCalculation
{
    float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const override
    {
        return {}; // Add your custom implementation in the cpp file.
    }
}