Game Develop

[UE5] 로우포인터대신 TObjectPtr을 써야하는 이유? 본문

UnrealEngine5/이것저것

[UE5] 로우포인터대신 TObjectPtr을 써야하는 이유?

MaxLevel 2025. 4. 2. 11:38

 

뭐랄까 확실하다기보다는 아직까지는 좀 더 추상적이긴 한데..

언리얼 문서에서는 TObjectPtr을 써야하는 이유로 동적해상도와 액세스 추적을 추가한다! 라고 되어있다.

사실 이부분은 언젠가 실제로 겪었을 때 이 글을 업데이트해야겠다고 생각한다.. 지금은 잘 모르겠다.

 

이것보다 좀 더 와닿는것은, 언리얼엔진만든 에픽사가 앞으로 '표준'으로써 로우포인터대신 TObjectPtr을 채택했다는 사실 자체이다.

즉, 버전이업데이트될때마다 그들이 만드는 코드들은 개발자가 TObjectPtr을 사용한다는 '가정'하에 디자인할 것이라는 것.

이 문구를 보니까 뭔가 로우포인터쓸지 TObjectPtr 쓰지 살짝 고민했던것이 사라졌다.

 

정리하자면 헤더에서 변수선언할때는 로우포인터대신 TObjectPtr을 쓰고, 함수내의 로컬변수같은것에서만 로우포인터를 사용하는쪽으로 점점 바꿔보자.

 

내가 참고한 글은 이 글이다.

https://forums.unrealengine.com/t/why-should-i-replace-raw-pointers-with-tobjectptr/232781

 

Why should I replace raw pointers with TObjectPtr?

I am reading the UE5 migration guide (Unreal Engine 5 Migration Guide | Unreal Engine 5.0 Documentation), and I see that TObjectPtr is now recommended over raw pointers. But the only thing the guide says about what this new type does is this: This system a

forums.unrealengine.com

 

 

다만, TMap같은 컨테이너에서 TObjectPtr을 사용했을 때 생기는 이슈들이 좀 있는 것 같다.

이부분은 확실하게 인지하는것이 좋다.