Using 4.9.1.
I’ve currently got a strange problem with two of my custom components in a C++/Blueprint project. Whenever I open the editor and attempt to start PIE mode, this fails with a warning about unresolved compile errors:
When I look at the files, the problem appears to be that the component does not get recognized as being of type UnitAbilityComponent_BP, despite this being an indirect parent class.
Compiling the Blueprint resolves all these errors, and afterwards I can play the game normally. Unfortunately, no matter what I do, as soon as I close and reopen the editor, the errors are back.
I’ve tried recompiling and force-saving all ability component blueprints, reparenting the affected blueprints (to their current, correct parent) and rebuilding the entire C++ project, but none of this had any effect.
The errors starting appearing after I added references to these ability components (all of them, not just the affected ones) to a DataTable, whose source struct is defined in UnitAbilityComponentBase.h.
USTRUCT( BlueprintType, Blueprintable, Category = "Combat" )
struct FCombatActionData : public FTableRowBase
{
GENERATED_USTRUCT_BODY()
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
TEnumAsByte<EActionType> ActionType;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
int32 MinDamage;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
float MaxDamageMultiplier;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
int32 AttackRange;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
float ChanceToHit;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
float CriticalHitChance;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
int32 AreaOfEffectRange;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
TEnumAsByte<ETargetType> TargetType;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
TSubclassOf<class UUnitAbilityComponentBase> AbilityClass;
UPROPERTY( VisibleAnywhere, BlueprintReadOnly, Category = "Combat" )
UMaterial* AbilityMat;
};
I don’t understand why that would result in these confusing pseudo-errors.
Since it’s possible to compile the classes and test the game normally, this is not a critical problem, but it’s very confusing. Help would be greatly appreciated!
Thanks in advance,