GameMode에서 Default Pawn Class를 설정한 Pawn의 메모리는 내부적으로 어떻게 처리되는지 궁금해져서 이에 대해 조사하다가 가비지컬렉션에 대해 정리하게 되었다.
가비지 컬렉션과 메모리 관리
언리얼 엔진에서 디폴트 폰(Default Pawn)을 게임 모드에 등록하면 게임 시작 시 자동으로 캐릭터가 스폰된다. 이때 메모리 관리와 가비지 컬렉션(GC)이 어떻게 이루어지는지 정리한다.📌 캐릭터 스
dong-grae.tistory.com
플레이어가 드론에 상호작용을 하고 조종을 하는 것을 구현하기 위해, PlayerController에 연결을 해제하고 드론에 Possess해야했고 이 과정에서 Possess함수를 호출하면 내부적으로 OnPossess 콜백함수가 호출된다는 사실을 알게되었다. 처음에 Possess된 이후 로직을 컨트롤러에서 Possess 함수를 오버라이딩해 그 안에서 작성하려고 했는데 결과적으로 불가능했고 OnPossess함수에서 구현해야했다.
이유를 찾아보니 언리얼 엔진의 AController::Possess(APawn* InPawn) 함수는 final로 선언되어있어 자식 클래스로 오버라이드 할 수 없다는 것이다.
Possess 함수는 기본적인 소유권 전환 로직이 매우 중요하고, 이를 안전하게 보호하기 위해 엔진 레벨에서 변경이 불가능하도록 설계되어있다.
Pawn에 Possess 하기
플레이어가 드론을 조종하거나 탈 것을 타고 이동을 할 때, PlayerController가 다른 Pawn에 Possess해야 한다.드론을 예시로 플레이어에게 Possess 되어있는 Controller를 드론으로 전환하는 과정을 정리하
dong-grae.tistory.com
'내배캠 > TIL' 카테고리의 다른 글
25.02.05 (수) (0) | 2025.02.05 |
---|---|
25.02.04 (화) (0) | 2025.02.04 |
25.01.28 (화) (0) | 2025.01.28 |
25.01.27 (월) (0) | 2025.01.27 |
25.01.23 (목) (1) | 2025.01.23 |