반응형
언리얼 오브젝트
- 언리얼 실행 환경에 의해 관리되는 C++ 객체
- 언리얼 엔진에서 항상 모듈 단위로 관리된다.
- 다음과 같은 기능들을 포함한다.
- 오브젝트의 초기값을 자체적으로 관리 => CDO(Class Default Object)
- 자동 메모리 관리 => 가비지 컬렉션을 통해
- 런타임에 오브젝트의 타입 확인이 가능 => Reflection
- 오브젝트 정보를 안전하게 관리 => Serialization
- 함수를 묶어서 효과적으로 관리 및 호출 => Delegate
- 서버와 클라의 오브젝트 동기화 => Replication
- 언리얼 에디터의 인터페이스를 통한 오브젝트 제어
언리얼 오브젝트 클래스가 되기 위한 조건
- [Filename].generated.h 헤더 include
- 이 헤더 아래 다른 헤더가 있으면 안됨
- UCLASS() 매크로 추가
- GENERATED_BODY() 추가
- 클래스 본문에 추가적인 함수나 typedef를 추가해줌
- UObject 상속
- 소멸자 없어야 함
- 생성자는 두 가지만 사용 가능
- 기본 생성자와 const FObjectInitializer& 타입을 받는 생성자
- 생성자는 초기에 CDO를 만들기 위한 용도로만 사용되고 이후엔 사용되지 않음
- 대신 Init() 혹은 BeginPlay()에서 생성자에서 필요한 동작을 정의
- 만약 특정 멤버를 초기화하고 싶은 경우 const FObjectInitializer& 타입을 받는 생성자 사용 가능
- ex) 액터에 기본적으로 제공되는 Movement Component(MC) 대신 커스텀 MC를 사용하고 싶은 경우 FObjectInitializer::SetDefaultSubobjectClass() 찾아보기
클래스 기본 객체(CDO: Class Default Object)
- 모든 언리얼 오브젝트는 런타임 초기에 클래스에 설정된 기본값을 통해 객체를 하나 생성한다.
- 이를 클래스 기본 객체(CDO: Class Default Object)라 한다.
- CDO는 일종의 Sample 데이터이며, 이를 바탕으로 새로운 인스턴스를 생성한다.
- 오브젝트를 매번 처음부터 새로 생성 및 초기화하는 것보다 기본적인 값이 설정된 인스턴스를 복제 후 필요 값만 추가로 변경하는 것이 효율적이기 때문
'게임 공부 > Unreal Engine' 카테고리의 다른 글
UE4 참고 레퍼런스 (애셋 로드 관련) (0) | 2021.12.13 |
---|---|
Hard Object Pointer (0) | 2021.12.13 |
적을 향하도록 회전하는 방법(로직)에 대해 간단하게 알아보자 (0) | 2021.11.29 |
[UE4] 액터가 게임에 참여할 때 호출되는 함수들 (0) | 2021.07.29 |
[UE4] UPROPERTY란? (0) | 2021.07.23 |
댓글