언리얼 엔진 5/공부

[언리얼 엔진 5] CDO(Class Default Object)에 대하여

ciel45 2023. 11. 27. 23:03

언리얼 엔진 5는 Actor를 상속받은 C++클래스를 사용할 때, 해당 클래스를 기반으로 CDO를 생성한다.

 

 

 

CDO란?

  • 언리얼 엔진의 Reflection 시스템에 포함된 오브젝트의 Master Copy
    • 각 클래스마다 만들어지는 일종의 마스터 오브젝트
  • 엔진이 시작될 때, 소스코드를 컴파일할 때 만들어진다.
  • C++ 코드로부터 파생된 블루프린트 클래스들의 프로퍼티(변수)의 기본 값을 가지고 있다.
  • 기본 값들은 클래스의 생성자를 통해 설정된다.

 

 

 

 

 

이에 따른 클래스의 생성자를 사용함에 있어 주의할 점 

  • 클래스의 생성자에 해당하는 코드는 인게임이 아닌 에디터에 먼저 영향을 끼친다.
  •  게임 시작시에 어떠한 로직을 실행시키고 싶다면, 생성자가 아닌 BeginPlay 함수에서 해야한다.
    • 만약 게임플레이 관련 코드가 클래스의 생성자에 들어간다면?
      • 클래스의 생성자가 실행되는 타이밍은 게임이 시작될 때가 아닌, 엔진이 시작될 때 / 컴파일 시이다.
      • 해당 시점은 레벨과 오브젝트의 로드가 미완료된 타이밍이다.
      • 따라서 생성자에 들어간 게임플레이 코드는 의미없는 결과, 혹은 에러를 발생시킬 것이다.

 

 

 

 

 

생성자의 올바른 사용

  • 오브젝트에 컴포넌트를 추가
  • SetUpAttachment() 등을 통한 컴포넌트의 계층구조 변경
  • 각각의 오브젝트의 변수의 기본값 할당
  • 기타 등등 인게임에서 실행되는 것이 목적이 아닌 것