-
[Unreal] 언리얼 TObjectPtr에서 UFUNCTION 사용 불가쾌락없는 책임 (공부)/Unreal 2022. 11. 4. 20:59반응형
개요
언리얼은 5로 버전업이 되었고 이전의 원시 포인터에서 TObjectPtr을 사용하라는 권고가 생겼습니다. 그런데 참 아니꼬운 요소이지만 사용하다 보면 이런 이야기가 나오게 됩니다.
UFunctions cannot take a TObjectPtr as a parameter
아니 쓰라고 했지만 아직 UFunction은 인자로 TObjectPtr을 받을 수 없다고 나옵니다. 이와 관련해서 함수 반환값도 이렇게 되면 안되는것 같은데 이건 기억이 잘 안나고 확실한건 UFUNCTION 매크로가 달린 함수들은 TObjectPtr 을 인자로 받을 수 없다는 뜻입니다.
왜 이런 문제가 있을까
UFunctions cannot take a TObjectPtr as a parameter. Why?
I have a method: UFUNCTION() void SpawnLoadedActors(TObjectPtr<UGnarlGameInstance> GameInstance); This gives a compiler error: UFunctions cannot take a TObjectPtr as a parameter. If I remove UFUNCTION(), it compiles fine. I admit that I don’t understand
forums.unrealengine.com
이런 빅-이슈를 나만 겪었을 리도 없고 역시 언리얼 개발 포럼에 이 이야기가 있습니다. 그리고 이 스레드에서 나온 결론은 없습니다! 기대감을 품고 들어갔는데 안되는 이유나 원리 등에 대한 이야기를 찾을 수 없었습니다. 혹시 이 글을 보시는 분들 중 이후 원인을 찾으신다면 꼭 좀 남겨주세요.
그래서 결론
아직 TObjectPtr로 완전 마이그레이션이 된 것이 아닌지 일단 공식 문서에서도 단순 패스스루 함수를 사용하라고 합니다. 저는 로직을 변경했기에 이 포인터를 얻을 필요가 없어졌지만 일단 단순히 Get()이나 ToRawPtr() 같은 함수를 이용한 패스스루 함수를 만들어서 사용하라고 합니다.
뭐 이런 패스스루 함수가 기분은 좋지 않은데 일단 급한 경우에는 이런 식으로 해결해야 할 것 같습니다.
언리얼 엔진 5 마이그레이션 가이드
언리얼 엔진 4 프로젝트로 언리얼 엔진 5로 이주하는 방법 및 요구 사항.
docs.unrealengine.com
위 공식 문서의 코드 반응형'쾌락없는 책임 (공부) > Unreal' 카테고리의 다른 글
[Unreal] 언리얼 Anim Montage가 재생되지 않을 때 - Unreal Anim Montage not playing (0) 2022.11.05 [Unreal] GarbageCollection.cpp 에러, Invalid object in GC 에러 (0) 2022.11.05 [Unreal] Unreal Engine 5 TObjectPtr (2) 2022.09.20 [Unreal] unreal callback by delegate - 언리얼 콜백 만들기 (1) 2022.08.21 [Unreal] 언리얼 visual studio 자동완성 느린 문제 (0) 2022.02.26