When a native actor 'AMyActorClass' creates AttributeSets as a default subobject via CreateDefaultSubobject, duplicating an actor blueprint based on AMyActorClass will result in a blueprint with an invalid attribute set.
The impact of this is that duplicating actor blueprints with attribute sets results in a broken asset. The attribute set is invalid at editor-time and will not work at runtime. The duplicated blueprint is unusable.
AAttributeSetReproActor::AAttributeSetReproActor()
{
PrimaryActorTick.bCanEverTick = false;
AbilitySystemComponent = CreateDefaultSubobject<ULabAbilitySystemComponent>(TEXT("ASC"));
AbilitySystemComponent->SetIsReplicated(true);
HealthAttributeSet = CreateDefaultSubobject<ULabHealthAttributeSet>(TEXT("HealthSet"));
}
void AAttributeSetReproActor::PostInitProperties()
{
Super::PostInitProperties();
if (ensureAlwaysMsgf(IsValid(HealthAttributeSet), TEXT("Health attribute set on '%s' invalid!"), *GetPathName()))
{
UE_LOG(LogTemp, Warning, TEXT("POST INIT - Health attribute set on '%s' is valid: %s"), *GetPathName(), *HealthAttributeSet->GetPathName());
}
}
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-273844 in the post.
| 2 |
| Component | UE - Gameplay - Gameplay Ability System |
|---|---|
| Affects Versions | 5.4, 5.5 |
| Target Fix | 5.6 |
| Fix Commit | 41905027 |
|---|
| Created | Apr 22, 2025 |
|---|---|
| Resolved | Apr 24, 2025 |
| Updated | Jun 17, 2025 |