首页 > 解决方案 > 如何在 C++ 中覆盖 BlueprintNativeEvent 函数?

问题描述

我想BlueprintNativeEvent在 C++ 的派生类中实现部分带有标记的函数,而其他部分在派生的蓝图类中实现该函数的部分。

但是,该函数似乎不是一个virtual函数,所以我不知道如何override在 C++ 中使用它(但在蓝图中它可以工作)。来自 GameplayAbilitySystem 的示例:

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

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

标签: c++polymorphismunreal-engine4unreal-blueprint

解决方案


在编译之前,UnrealHeaderTool会为基类中的a生成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.
    }
}

推荐阅读