当属性的基值更改时,可以UAttributeSet::PostGameplayEffectExecute()访问(新)值和GameplayEffect及其上下文。我用它来将更改后的值打印到 UI(这也在 ActionRPG 中完成)。
是否有类似的东西可用于属性的当前值?如何通知UI,何时FGameplayAttributeData::CurrentValue更新?
UAttributeSet::PreAttributeChange()在每次值更新时都会调用它,但它不提供任何上下文,因此无法从那里访问 UI(广播的事件FAggregator也不适合)。FGameplayAttributeData::CurrentValue(提示由设置当前值的GameplayEffect触发)。这可以通过从 a 派生GameplayCueNotifyActor并使用其事件OnExecute和 来实现OnRemove。然而,仅仅为了更新 UI 而实例化一个 Actor 似乎是一种资源浪费。