언리얼 엔진 5는 Actor를 상속받은 C++클래스를 사용할 때, 해당 클래스를 기반으로 CDO를 생성한다.
CDO란?
- 언리얼 엔진의 Reflection 시스템에 포함된 오브젝트의 Master Copy
- 각 클래스마다 만들어지는 일종의 마스터 오브젝트
- 엔진이 시작될 때, 소스코드를 컴파일할 때 만들어진다.
- C++ 코드로부터 파생된 블루프린트 클래스들의 프로퍼티(변수)의 기본 값을 가지고 있다.
- 기본 값들은 클래스의 생성자를 통해 설정된다.
이에 따른 클래스의 생성자를 사용함에 있어 주의할 점
- 클래스의 생성자에 해당하는 코드는 인게임이 아닌 에디터에 먼저 영향을 끼친다.
- 게임 시작시에 어떠한 로직을 실행시키고 싶다면, 생성자가 아닌 BeginPlay 함수에서 해야한다.
- 만약 게임플레이 관련 코드가 클래스의 생성자에 들어간다면?
- 클래스의 생성자가 실행되는 타이밍은 게임이 시작될 때가 아닌, 엔진이 시작될 때 / 컴파일 시이다.
- 해당 시점은 레벨과 오브젝트의 로드가 미완료된 타이밍이다.
- 따라서 생성자에 들어간 게임플레이 코드는 의미없는 결과, 혹은 에러를 발생시킬 것이다.
- 만약 게임플레이 관련 코드가 클래스의 생성자에 들어간다면?
생성자의 올바른 사용
- 오브젝트에 컴포넌트를 추가
- SetUpAttachment() 등을 통한 컴포넌트의 계층구조 변경
- 각각의 오브젝트의 변수의 기본값 할당
- 기타 등등 인게임에서 실행되는 것이 목적이 아닌 것
'언리얼 엔진 5 > 공부' 카테고리의 다른 글
[언리얼 엔진 5] 애니메이션 사운드 (0) | 2023.12.16 |
---|---|
[언리얼 엔진 5] Blend Space 방향 전환이 부자연스러울 경우 확인할 것 (0) | 2023.12.15 |
[언리얼 엔진 5] Collision에 대하여 (0) | 2023.11.27 |
[언리얼 엔진 5] Input Action에 대하여 (0) | 2023.11.27 |
[언리얼 엔진 5] 헤더를 include할 때 주의할 점 (+ 포워드 선언) (0) | 2023.11.27 |