Make Unreal REAL.
article thumbnail

이득우 교수님의 <이득우의 언리얼 C++ 게임 개발의 정석> 책을 보며 공부하다가 아래와 같은 코드를 작성했다.

 

섹션(혹은 던전)에서 AI를 하나 생성하고 OnDestroyed 델리게이트에 던전을 COMPLETE 상태로 전환하는 함수를 등록했다.

 

그런데 의문점이 하나 생겼다.

 

 

 

OnDestroyed

Event triggered when the actor has been explicitly destroyed.

docs.unrealengine.com

공식 문서를 보면 OnDestroyed 델리게이트는 액터가 명시적으로 소멸됐을 때 발동한다고 한다.

 

Implicitly(암시적)이었으면 아.. GC가 실행되기 전이라서 가능한 거구나..할텐데, 명시적으로 액터가 소멸되었는데 그 안에 있는 델리게이트를 발동하고 심지어 소멸된 액터를 함수에서 사용하다니..

 

아래 함수에서 IsValid(DestroyedActor)로 체크해봐도 유효하다고 출력된다.

 

 

추측으로는 OnDestroyed 델리게이트를 실행하기 위해 액터의 참조를 어딘가에 보관하고 있어 GC가 실행되지 않았고, 델리게이트가 실행된 이후에 액터를 가리키는 참조가 모두 사라져 GC가 실행돼 소멸하는 것이 아닌가싶다.

 

검색해봐도 안 나오니 이것도 다음에 고수를 만나면 꼭 물어봐야겠다.

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그