인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김민재님의 프로필 이미지

작성한 질문수

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

11강 언리얼 컨테이너 라이브러리 II - 구조체와 Map

TArray와 UPROPERTY

작성

·

58

0

안녕하세요.

TArray로 UObejct를 관리할때 UPROPERTY를 붙이는건가요 TArray로 포인터를 다룰때 붙여야하는건가요? 이 것에 대한 내용이 정리가 잘 되지않아서 질문드립니다

답변 2

0

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

일단 기본적으로 언리얼 엔진에서 UObject 객체는 NewObject라는 API로 동적할당하고 포인터로만 접근합니다.
따라서 UObject 객체의 배열은 포인터의 배열로 다뤄야 하고 이것이 제대로 관리되기 위해서는 TArray에 UPROPERTY매크로를 붙여야 합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김민재님.

질문하신 내용은 Unreal Engine에서 TArrayUPROPERTY 사용에 관한 것으로 이해됩니다. TArray를 사용할 때 UObject를 안전하게 관리하기 위해 UPROPERTY를 어떻게 사용해야 하는지에 대한 요점을 정리하자면 다음과 같습니다.

  1. TArray와 UPROPERTY 사용: TArray는 Unreal Engine의 컨테이너 클래스 중 하나로, 여러 개의 객체(또는 포인터)를 저장할 수 있습니다. 이러한 TArrayUObject 타입 또는 UObject 포인터를 담고 있다면, 가비지 컬렉션 시스템이 객체의 존재를 인식하고 적절히 관리할 수 있도록 하기 위해 UPROPERTY() 매크로를 사용하는 것이 좋습니다.

  2. UObject 포인터와 UPROPERTY: TArrayUObject*(포인터)를 담고 있을 경우, UPROPERTY를 추가해서 Unreal의 가비지 컬렉터가 포인터를 정확하게 추적할 수 있도록 해야 합니다. 이렇게 함으로써 객체가 참조되고 있을 때 스윕(sweep) 단계에서 잘못 해제되는 것을 방지할 수 있습니다.

이와 관련해 이미 언급된 질문을 검토해 보시면 추가적인 이해를 도울 수 있습니다:

위의 답변에서 설명한 것처럼, UObject 또는 그 포인터들을 포함하는 TArray에 대해서는 UPROPERTY를 명시하여 가비지 컬렉션에서 객체의 참조가 제대로 관리될 수 있도록 하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.