Roi*_*ton 3 c++ polymorphism unreal-engine4 unreal-blueprint
我想BlueprintNativeEvent在 C++ 的派生类中实现标记为 的函数的一部分,而其他人则在派生蓝图类中实现该函数的一部分。
然而,该函数似乎不是一个virtual函数,所以我不知道如何override在 C++ 中使用它(尽管在蓝图中它可以工作)。来自 GameplayAbilitySystem 的示例:
UFUNCTION(BlueprintNativeEvent, Category="Calculation")
float CalculateBaseMagnitude(const FGameplayEffectSpec& Spec) const;
Run Code Online (Sandbox Code Playgroud)
如何在 C++ 的派生类中重写它?
在编译之前,UnrealHeaderTool会在基类中生成virtuala 的函数。BlueprintNativeEvent上面的例子看起来像:
virtual float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const;
Run Code Online (Sandbox Code Playgroud)
因此,在派生的 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.
}
}
Run Code Online (Sandbox Code Playgroud)