执行流程为:
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
浙公网安备 33010602011771号