강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

로켓라쿤님의 프로필 이미지
로켓라쿤

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

구르기 기능 구현

TObjectPtr 사용처

해결된 질문

작성

·

170

·

수정됨

0

안녕하세요!! 덕분에 좋은 강의 너무 잘 듣고 있습니다. 감사합니다 (_ _)

혹시 TObjectPtr을 사용하신다면..?! 언제 사용하실지 문득 궁금해서 질문 남겨봅니다!!

답변 2

4

Spector님의 프로필 이미지
Spector
지식공유자

안녕하세요~

TObjectPtr은 언리얼 엔진에서 가비지 컬렉션(GC)에 의해 관리되는 UObject 파생 클래스를 참조할 때 원시 포인터 대신 사용할 수 있습니다. 이에 해당되는 모든 경우에 대체가 가능합니다.

 

다만, 상황에 따라 TObjectPtr과 원시 포인터의 사용을 구분하는 것이 중요합니다.

일반적으로 UPROPERTY로 선언된 클래스 멤버 변수에는 TObjectPtr을 사용하는 것이 권장됩니다.

 

반면, 임시 참조나 함수 매개변수로 UObject를 전달할 때는 주로 원시 포인터를 사용합니다.

이러한 경우 참조의 수명이 제한적이고 명확하기 때문에 TObjectPtr의 추가 기능이 필요하지 않습니다.

 

또한, 성능이 중요한 코드 섹션에서는 가비지 컬렉션 오버헤드를 고려해 원시 포인터가 더 효율적인 선택일 수 있습니다. 함수 내부의 지역 변수 역시 일반적으로 원시 포인터로 선언하는 것이 적합합니다.

주목할 점은 TObjectPtr이 주로 에디터 환경에서 추가 기능을 제공한다는 것입니다. 최종 배포 빌드에서는 모든 TObjectPtr이 원시 포인터로 변환되어, 런타임 성능에 영향을 미치지 않습니다.

즉, TObjectPtr을 사용하지 않는다고 해서 GC에서 문제가 된다거나 하지는 않습니다.

 

1

로켓라쿤님의 프로필 이미지
로켓라쿤
질문자

와 자세한 답변 감사합니다..!! 언리얼5부터 쓰면 좋다고 들었지만 구체적으로 왜 좋은지 몰랐는데, 성능이 중요하거나 간단하게 쓸 때는 원시 포인터가 더 나을 수도 있군요 😀

로켓라쿤님의 프로필 이미지
로켓라쿤

작성한 질문수

질문하기