일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 메타테이블
- more effective c++
- 예외
- UE4
- exception
- 영화 리뷰
- 오블완
- effective stl
- 언리얼
- 참조자
- 다형성
- c++
- virtual function
- reference
- 반복자
- 상속
- Vector
- Effective c++
- implicit conversion
- operator new
- lua
- 영화
- resource management class
- 스마트 포인터
- 루아
- 비교 함수 객체
- 티스토리챌린지
- 암시적 변환
- Smart Pointer
- 게임
Archives
- Today
- Total
스토리텔링 개발자
[UE4] 구조체(Struct) 본문
728x90
개요
언리얼 엔진에 있는 타입을 크게 나눠보면 아래와 같습니다.
- UObject를 위시하는 클래스 타입
- 구조체 타입
이 중 2번, 구조체에 대해서 정리해 보았습니다.
구조체의 선언
선언부는 UObject 기반 클래스와 같습니다.
- GENERATED_BODY() 매크로로 리플랙션 관련 함수들을 추가
- 생성자 선언 / 정의
USTRUCT()
struct FTempStruct
{
GENERATED_BODY()
public:
FTempStruct() {}
};
구조체와 클래스의 차이
구조체를 사용하는 이유는 UObject 클래스가 구조체보다 무겁기 때문입니다.
구조체에서는 대표적으로 아래와 같은 기능들을 제공하지 않습니다.
가비지 컬렉팅 불가
구조체는 가비지 컬렉션의 관리를 받지 않습니다.
즉, 동적 할당을 한 경우엔 스마트 포인터를 적극적으로 사용해야 합니다.
함수 직렬화 기능 불가
구조체는 함수 직렬화를 제공하지 않습니다.
즉, 블루프린트용 함수를 만들 수 없다는 뜻입니다.
USTRUCT와 Raw Struct의 차이?
C++의 구조체를 직접 사용하지 않는 이유는 무엇일까요.
직렬화 기능 제공 유무
Raw 구조체를 사용하면 변수의 직렬화를 사용할 수 없습니다.
즉, 에디터 및 블루프린트에서 구조체에 접근할수도 다룰수도 없다는 뜻입니다.
리플렉션 기능 제공 유무
언리얼 오브젝트는 기본적으로 리플렉션 기능을 제공합니다.
하지만 엔진의 기능이므로 Raw 구조체에서는 사용할 수 없습니다.
728x90
'개발 > 언리얼 엔진' 카테고리의 다른 글
[UE4] 컨텐츠 쿠킹(Content Cooking) (0) | 2021.10.27 |
---|---|
[UE4] 비주얼 스튜디오 디버깅을 위한 비주얼라이저(UE4 Visualizer for Debuging Visual Studio) (0) | 2021.10.22 |
[UE4] 레벨(Level) (0) | 2021.10.08 |
[UE4] 상위 객체 (Outer / Owner / AttachParent) (0) | 2021.10.01 |
[UE4] 텍스쳐 스트리밍 시스템(Mipmap) (0) | 2021.09.29 |
Comments