The Crash Happen in below code :
void AARTSCharacterBase::ExecuteAbilityByClass(TSubclassOf<UARTSGameplayAbility> ability, FARTSItemSlot AbilitySlot)
{
//FGameplayAbilitySpecHandle* hand = WeaponAbilities.Find(ability);
FMySlotAbilitySpeces* Speces = SlottedAbilitySpecs.Find(AbilitySlot);
if (Speces && Speces->AbilitySpeces.Num() > 0)
{
for (FGameplayAbilitySpec SpecHandle : Speces->AbilitySpeces)
{
if (SpecHandle.Ability->GetClass() == ability)
{
AbilitySystemComponent->TryActivateAbility(SpecHandle.Handle, true);
}
}
}
}
This is I figure out not Crash sloution
void AARTSCharacterBase::ExecuteAbilityByClass(TSubclassOf<UARTSGameplayAbility> ability, FARTSItemSlot AbilitySlot)
{
//FGameplayAbilitySpecHandle* hand = WeaponAbilities.Find(ability);
FMySlotAbilitySpeces* Speces = SlottedAbilitySpecs.Find(AbilitySlot);
if (Speces && Speces->AbilitySpeces.Num() > 0)
{
TArray<FGameplayAbilitySpec> TempAbilitySpeces;
TempAbilitySpeces.Append(Speces->AbilitySpeces);
for (FGameplayAbilitySpec SpecHandle : TempAbilitySpeces)
{
if (SpecHandle.Ability->GetClass() == ability)
{
AbilitySystemComponent->TryActivateAbility(SpecHandle.Handle, true);
}
}
}
}
I want know why this Crash happen. Thanks!