Enemy中设置health和maxhealth,maxhealth初始化失败

执行流程为:

GE->PreAttributeChange->AttributeSet->PostGameplayEffectExecute->C++读取AttributeSet

->widget->widgetComponent

 

character中包含PossessedBy,PossessedBy先于BeginPlay执行,所以widgetcomponent执行更新widget时,可以正常获取attributeset.

enemy中不包含PossessedBy,当先执行BeginPlay时,WidgetComponent没有初始化,也没有初始化AbilityEffect,广播的AbilitySystemComponent和AttributeSet为nullptr,所以读取AttributeSet,会报错nullptr。

当Super::BeginPlay放在初始化Effect后时,能力组件、Effect都初始化完成,广播的AbilitySystemComponent和AttributeSet为实际创建的WidgetComponent和AttributeSet

 

posted on 2026-09-09 17:42  也许只能追忆  阅读(16)  评论(0)    收藏  举报