인프런 커뮤니티 질문&답변
OnInterruptedCallback()으로 몽타주가 중간에 취소될 경우 CancelAbility를 호출하는게 맞을까요 ?
작성
·
11
0

지금 OnInterruptedCallback()에서 EndAbility를 호출 하고 마지막 인자만 true로 넣어서 취소 표시만 해주는거 같은데 이렇게 했더니 어빌리티에서 활성화로 넣어준 태그가 중간에 공격을 받거나 다른 상태에 빠져서 애니메이션이 취소가 되면 태그가 사라지지 않는 문제가 생기더라고요. Cancel을 호출하는 식으로 변경해야 되는게 맞을지 궁금해서 남겨둡니다 .
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. BlackCode님.
프로젝트에서 OnInterruptedCallback()으로 몽타주가 중간에 취소될 때 EndAbility가 제대로 호출되지 않으면 태그가 유지되는 문제가 발생할 수 있습니다. 이는 어빌리티가 정상적으로 종료되지 않았기 때문입니다.
해결책
EndAbility 대신 CancelAbility를 사용하는 것이 더 적절할 수 있습니다. CancelAbility 함수는 어빌리티를 강제로 취소하며, 모든 상태와 태그를 정리하는 절차가 포함되어 있습니다. 이는 어빌리티가 예상치 못한 상황으로 인해 중단되었을 때 적합한 방법입니다.
EndAbility(bool bReplicateEndAbility, bool bWasCancelled): 이 함수는 일반적으로 어빌리티 종료시 호출되며,
bWasCancelled를true로 설정하면 어빌리티가 취소되었음을 명시할 수 있습니다.CancelAbility(): 이 함수는 어빌리티를 강제로 취소하며 관련 상태와 태그를 모두 정리합니다. 일반적으로 인터럽트 상황에서는
CancelAbility를 사용하는 것이 태그 정리에 안정적입니다.
참고 자료
- ASC->SpawnedTargetActors 에 추가된 타겟 액터에 관해서 질문있습니다.: 어빌리티 시스템 관련 질문 및 답변이 있습니다.
결론적으로, 현재 문제가 어빌리티의 비정상적인 종료로 인해 발생한다면 CancelAbility를 호출하는 것이 적절할 가능성이 높습니다. 이는 태그 정리를 보장하고 예상치 못한 종료 시나리오에 대처하는 데 유리합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





