점프 파츠 먹었을때 한번만 먹기만 하면 게임 끝 다음 아웃런갈때까지도 무조건 점프가 여러번됨 이게 안없어지는 버그
RemoveGEForSlot부분이 있는데 여기서
if (UAbilitySystemComponent* ASC = GetOwnerASC()){
ASC->RemoveActiveGameplayEffect(*Handle);
}
ActiveGEHandles.Remove(Slot);
GetOwnerASC()는 PS->GetPawn()이 유효할때만 ASC를 반환하는데 그 순간 ASC를 못 찾으면 RemoveActiveGameplayEffect는 호출 안되고도 핸들 기록(ActiveGEHandles.Remove(Slot))은 그냥 지워짐. 그러면 그 Infinite GE는 ASC에 영원히 남고, 이걸 평생 지울 방법도 없기때문에 그냥 계속 지속되는게 아닐까? 추정
ClearAll에서 GE를 없앨때 지금은 장착된 장비기준으로 정리했지만 ActiveGEHandles에 남아있는 모든 슬롯을 기준으로 정리하는식으로 교체?? -> 만약에 이게 가능하다면 이미 교체되어서 없는 고아핸들들도 강제로 청소할 수 있게된다.
UNSPartEquipComponent::ClearAll에서
TArray<FGameplayTag> HandleSlots;
ActiveGEHandles.GetKeys(HandleSlots);
for (const FGameplayTag& Slot : HandleSlots)
{
RemovePartEffects(Slot);
}
for (const FGameplayTag& Slot : ClearedSlots)
{
RemovePartEffects(Slot);
}
이런식으로 추가하지않을까 싶음