Following this tutorial, I am adding the Gameplay Abilities System to my game.
I add the UAbilitySystemComponent
to the AAbilityCharacter
class in the header like so:
/// Interface to the gameplay ability system
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess), Category = Abilities)
UAbilitySystemComponent* AbilitySystem;
And create the component in the constructor like so:
// Component which we use to interface to the ability system
AbilitySystem = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("Ability System"));
However, by logging from SetupPlayerInputComponent
and BeginPlay
, it seems that the component no longer exists!
LogTemp: Display: Ability System Missing in SetupPlayerInputComponent
LogTemp: Display: Ability System Missing in BeginPlay
This was previously causing crashes when I tried to bind the ability system to PlayerInput.
The AbilitySystem
shows up as an inherited component when I open the derived blueprint class in the editor:
But it does not have any properties that I can edit:
But when the AbilitySystem is added with the “New Component” button it’s details pane looks like so:
I am at my wits end trying to solve this issue. I am using the Advanced Locomotion Plugin but I re-parented it to my C++ class. However, when I reparent the final blueprint class I am using to the AAbilityCharacter
the problem persists. It also appears to extend to any non SceneComponent
I create, and I have not tired to replicate this issue with a SceneComponent
.
What could have caused this? I have tried a variety of approaches to track down the problem, but I can’t even figure out exactly where in the life-cycle the component is deleted except that it’s before SetupPlayerInputComponent