(1) Эти теги являются частью UAbilitySystemGlobals
. У него есть теги для:
- Актер мёртв
ActivateFailIsDeadTag
- на перезарядке
ActivateFailCooldownTag
- недостаточные расходы
ActivateFailCostTag
- заблокирован другими способностями
ActivateFailTagsBlockedTag
- отсутствуют обязательные теги
ActivateFailTagsMissingTag
- неверные настройки сети
ActivateFailNetworkingTag
(2) Они могут быть установлены (пример стоимости)
Установите теги в DefaultGame.ini
, используя соответствующий FName
(пример для затрат):
[/Script/GameplayAbilities.AbilitySystemGlobals]
ActivateFailCostName=My.Test.Tag
Убедитесь, что GameplayTag существует, например, в DefaultGameplayTags.ini
+GameplayTagList=(Tag="My.Test.Tag",DevComment="")
Инициализируйте эти теги, вызвав UAbilitySystemGlobals::Get().InitGlobalData()
, например, в конструкторе вашего UGameInstance
подкласса.
Как это работает
Пример затрат:
in UGameplayAbility::CanActivateAbility()
-> UGameplayAbility::CheckCost()
:
UAbilitySystemGlobals::ActivateFailCostTag
применяется к дополнительному параметру OptionalRelevantTags
, если расходы не могут быть предоставлены
- этот тег используется в
UAbilitySystemComponent::NotifyAbilityFailed()
который
- увольняет делегата
UAbilitySystemComponent::AbilityFailedCallbacks
Это похоже на другие случаи, упомянутые выше (время восстановления, блок, ...).