일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- resource management class
- lua
- reference
- 메타테이블
- Smart Pointer
- c++
- 스마트 포인터
- Effective c++
- exception
- 암시적 변환
- UE4
- inheritance
- 예외
- 언리얼
- 자원 관리 클래스
- 상속
- 영화
- 다형성
- 암시적 생성 함수
- operator new
- implicit creation function
- 영화 리뷰
- virtual function
- 루아
- more effective c++
- implicit conversion
- 게임
- 참조자
- multiple inheritance
- 자원 관리 객체
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