I am a bit confused, I need to make use of the function ApplyGameplayEffectToSelf(), which takes a UGameplayEffect* as its first argument.
So, in the header file, I have declared:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Ability", meta = (AllowPrivateAccess = "true")) UGameplayEffect* RegenerationEffect;
But then I found that there is actually nothing for me to choose in the editor, as shown in the attached image (p.s. I did created a Blueprint Child Class of GameplayEffect.
Then, I am forced to make the variable to be a TSubclassOf, like this:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Ability", meta = (AllowPrivateAccess = "true")) TSubclassOf<UGameplayEffect> RegenerationEffect;
And now I got my selection back in the editor windows like the 2nd image attached.
I just don’t understand what is the mechanism behind this? Anyone has idea on this?
Isn’t **TSubclassOf ** just a template class that provides UClass type safety, while we can still use the pointer variable?