Как переопределить функцию BlueprintNativeEvent в C ?

#c #polymorphism #unreal-engine4 #unreal-blueprint

#c #полиморфизм #unreal-engineer4 #unreal-blueprint

Вопрос:

Я хочу реализовать части функции, помеченные BlueprintNativeEvent , в производном классе в C , в то время как другие реализуют части этой функции в производном классе Blueprint.

Однако функция, похоже, не является virtual функцией, поэтому я не знаю, как override использовать ее в C (хотя в Blueprint это работает). Пример из GameplayAbilitySystem:

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

Как переопределить это в производном классе в C ?

Ответ №1:

Перед компиляцией UnrealHeaderTool генерирует virtual функцию для BlueprintNativeEvent в базовом классе. Приведенный выше пример будет выглядеть следующим образом:

 virtual float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpecamp; Spec) const;
  

Итак, в производном классе C переопределите (и реализуйте) эту функцию, как обычно в C :

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