要获取有关GameplayAbility激活失败的原因的通知,可以将功能分配给委托人public void FiltarBusqueda(String filtro) {
for (int r = 0; r < mTableLayout.getChildCount(); r++) {
TableRow trow = (TableRow) mTableLayout.getChildAt(r);
boolean hasMatch = false;
for (int c = 0; c <= trow.getChildCount(); c++) {
String text = ((TextView) trow.getChildAt(c)).getText().toString();
hasMatch = text.equals(filtro); //when comparing Strings, use `equals()` not `==`
if (hasMatch) break;
}
if (!hasMatch) {
mTableLayout.removeRow(trow);
}
}
}
。它包含一个标记参数。此参数可用于确定UAbilitySystemComponent::AbilityFailedCallbacks()
失败的原因,可以是
但是,在测试时,委托中的标签为空(或者甚至没有触发委托)。
答案 0 :(得分:0)
(1)这些标签是UAbilitySystemComponent::TryActivateAbility()
的一部分。它具有以下标签:
UAbilitySystemGlobals
ActivateFailIsDeadTag
ActivateFailCooldownTag
ActivateFailCostTag
ActivateFailTagsBlockedTag
ActivateFailTagsMissingTag
(2)可以通过(例如费用)进行设置
使用相应的ActivateFailNetworkingTag
(费用示例)在DefaultGame.ini
中设置标签:
FName
请确保GameplayTag存在,例如在[/Script/GameplayAbilities.AbilitySystemGlobals]
ActivateFailCostName=My.Test.Tag
DefaultGameplayTags.ini
通过调用+GameplayTagList=(Tag="My.Test.Tag",DevComment="")
来初始化这些标签,例如在您的UAbilitySystemGlobals::Get().InitGlobalData()
子类的构造函数中。
费用示例:
在UGameInstance
-> UGameplayAbility::CanActivateAbility()
中:
UGameplayAbility::CheckCost()
将应用于可选的out参数UAbilitySystemGlobals::ActivateFailCostTag
OptionalRelevantTags
,其中UAbilitySystemComponent::NotifyAbilityFailed()
这与上述其他情况(冷却,阻塞,…)相似。