#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.
}
}