본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 UClass 와 CDO (클래스 기본 객체) 는 무엇이며, 어떻게 활용해야 하나요?

by 밝음의기둥 2024. 11. 1.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 5 에서 UClass 와 CDO (클래스 기본 객체) 는 무엇이며, 어떻게 활용해야 하는지 물어봤습니다.


질문 >

언리얼 엔진 5 에서 UClass 와 CDO (클래스 기본 객체) 는 무엇이며, 어떻게 활용해야 하나요?

답변 >

언리얼 엔진 5에서 UClass와 **CDO(Class Default Object, 클래스 기본 객체)**는 언리얼 엔진의 객체 관리와 메모리 최적화에서 중요한 역할을 합니다.

UClass란?

**UClass**는 언리얼 엔진의 타입 시스템에서 클래스를 설명하고, 해당 클래스에 대한 메타데이터와 기능을 포함하는 구조체입니다. UClass는 언리얼 엔진의 리플렉션 시스템을 통해 C++ 클래스의 메타데이터를 관리하고, 블루프린트나 에디터에서 이를 활용할 수 있도록 돕습니다.

UClass의 주요 기능:

  • 리플렉션 및 블루프린트 통합: UClass는 클래스에 대한 정보를 리플렉션 시스템에 등록하여, 블루프린트나 에디터에서 클래스의 속성이나 함수를 활용할 수 있게 합니다.
  • 인스턴스 생성: UClass는 객체를 동적으로 생성할 수 있는 기능을 제공합니다. 예를 들어, 특정 클래스의 인스턴스를 런타임에 동적으로 생성할 때 사용됩니다.
// 특정 UClass를 통해 객체 인스턴스를 동적으로 생성
UClass* MyClass = AMyActor::StaticClass();
AActor* NewActor = GetWorld()->SpawnActor<AActor>(MyClass);

위의 예시에서는 StaticClass() 함수를 사용해 AMyActor 클래스의 UClass 객체를 가져와, 이 클래스를 기반으로 동적으로 액터를 생성합니다.


CDO (Class Default Object, 클래스 기본 객체)란?

CDO는 언리얼 엔진에서 각 클래스가 생성될 때 자동으로 생성되는 기본 인스턴스입니다. CDO는 클래스의 디폴트 속성을 저장하고, 이 값을 모든 인스턴스에 기본값으로 제공합니다. 이는 메모리 최적화와 성능 향상에 큰 도움이 됩니다.

CDO의 주요 기능:

  • 기본값 설정: CDO는 클래스에 정의된 기본값을 보관하며, 객체가 생성될 때 이 값을 기반으로 초기화합니다.
  • 메모리 효율성: CDO는 클래스의 기본 상태를 공유하므로, 모든 인스턴스가 동일한 기본값을 참조하여 메모리 사용을 줄일 수 있습니다.
  • 성능 최적화: CDO를 통해 클래스의 초기화 작업을 간소화하고, 객체 생성 시 기본값을 빠르게 적용할 수 있습니다.

CDO 접근 방법:

UClass* MyClass = AMyActor::StaticClass();
AMyActor* DefaultActor = MyClass->GetDefaultObject<AMyActor>();

위의 코드에서 GetDefaultObject() 함수를 사용하여 클래스 기본 객체(CDO)에 접근할 수 있습니다. 이를 통해 클래스의 기본 속성에 쉽게 접근할 수 있습니다.


UClass와 CDO의 활용 예시:

  1. 동적 생성 및 기본값 적용:
    • UClass를 사용하여 특정 클래스의 인스턴스를 동적으로 생성하고, CDO를 통해 해당 클래스의 기본값을 참고해 초기화 작업을 수행할 수 있습니다.
  2. 런타임 속성 접근:
    • CDO를 사용해 특정 클래스의 기본 속성을 가져와, 특정 로직에 활용할 수 있습니다. 예를 들어, 게임 내 모든 적 캐릭터가 동일한 초기 속도를 가져야 한다면, CDO의 기본 속도를 참조할 수 있습니다.
  3. 기본 설정 관리:
    • CDO는 에디터에서 기본값을 저장하고, 새로운 객체가 생성될 때 이 값을 기반으로 초기화하므로, 모든 인스턴스가 공통된 초기 상태를 가지게 됩니다. 이는 일관성을 유지하는 데 유용합니다.

주의사항:

  • CDO는 불변 객체로, 생성된 이후에는 값을 수정하지 않아야 합니다. 수정이 필요할 경우, 해당 값을 참조하여 복사본을 생성한 후 수정해야 합니다.
  • CDO는 클래스의 기본 상태를 나타내므로, 게임 내 특정 인스턴스의 설정 변경이 필요할 때는 CDO를 직접 수정하는 것이 아닌, 인스턴스별로 개별적으로 값을 설정해야 합니다.

이와 같이, UClass와 CDO는 언리얼 엔진의 객체 관리와 초기화에서 중요한 역할을 하며, 효율적인 메모리 관리와 성능 최적화를 가능하게 합니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형