안선생의 개발 블로그

[UE5] TObjectPtr 본문

언리얼/언리얼 C++

[UE5] TObjectPtr

안선생 2023. 11. 18. 23:02

TObjectPtr UObject에 대한 포인터 유형입니다. 원시 포인터 멤버 속성을 대체합니다. 64비트 포인터와 동일한 크기이며 편집기 빌드에서 액세스 추적 및 선택적 지연 로드 동작을 지원합니다. 참조된 개체에 대한 주소 또는 아직 로드되지 않은 참조된 개체를 설명하는 개체 핸들 테이블의 인덱스(편집기 빌드에서)를 저장합니다. 이는 UObject에 대한 원시 포인터와 동일하게 직렬화됩니다. 해결되면 가비지 수집에 참여하는 것은 UObject에 대한 원시 포인터와 동일합니다.

이는 고급 요리 시간 종속성 추적 및 편집기 시간 지연 로드 사용 사례를 지원하기 위해 원시 포인터를 자동으로 교체하는 데 유용합니다. 

 

공식문서에서 보면 위와 같다 

 

더알아봤는데 

 

원시 포인터와 동일하게 동작하지만 편집기에는 액세스와 같은 몇 가지 추가 기능이 있습니다.

추적 및 선택적 지연 로드 동작.

액세스 추적은 포인터가 얼마나 자주 액세스되거나 참조 해제되는지 추적할 수 있다는 의미입니다.

지연 로딩은 자산이 실제로 필요하거나 프로그램에서 사용될 때까지 로드할 수 없음을 의미합니다.

따라서 표준은 멤버 변수에 객체 포인터를 사용하는 쪽으로 더 나아가고 있습니다.

 

즉 언리얼에서는 원시포인터 대신 TObjectPtr를 쓰기 권장하고 있습니다.  뭐 어차피 동일한 역할 + 몇가지 기능 추가이고 언리얼에서 하라는데 안 할 이유는 없는 것 같습니다.

앞으로 원시 포인터 대신 UObjectPtr을 사용하자!

 

 

https://docs.unrealengine.com/5.0/en-US/API/Runtime/CoreUObject/UObject/TObjectPtr/

 

TObjectPtr

[TObjectPtr](API\Runtime\CoreUObject\UObject\TObjectPtr) is a type of pointer to a [UObject](API\Runtime\CoreUObject\UObject\UObject) that is meant to function as a drop-in replacement for raw pointer member properties.

docs.unrealengine.com