unreal engine gameplay abiliity 获取ability的cooldown剩余时间
unreal engine gameplay abiliity 获取ability的cooldown
版本 5.4.4
参考
测试代码
if (HasAuthority() && AbilitySystemComponent)
{
TArray<FGameplayAbilitySpecHandle> OutAbilityHandles;
AbilitySystemComponent->GetAllAbilities(OutAbilityHandles);
for (const FGameplayAbilitySpecHandle& Spec : OutAbilityHandles)
{
bool bInstance;
const UGameplayAbility* Ability = UAbilitySystemBlueprintLibrary::GetGameplayAbilityFromSpecHandle(AbilitySystemComponent, Spec, bInstance);
if (Ability && Ability->AbilityTags.HasTag(FGameplayTag::RequestGameplayTag(FName("Ability.BeastPower"))))
{
// float CdRemaining = Ability->GetCooldownTimeRemaining();
float CdRemaining;
float duration;
Ability->GetCooldownTimeRemainingAndDuration(Spec, Ability->GetCurrentActorInfo(), CdRemaining, duration);
if (CdRemaining > 0.0f)
{
UE_LOG(LogTemp, Log, TEXT("%s %f / %f"), *Ability->GetName(), CdRemaining, duration);
}
}
}
}