본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 접미사 _C 가 붙는 경우는 무엇입니까?

by 밝음의기둥 2024. 12. 5.
반응형

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

언리얼 엔진에서 접미사 _C 가 붙는 경우는 무엇인지 간략히 알아보았습니다.


질문 >

언리얼 엔진에서 접미사 _C 가 붙는 경우는 무엇입니까?

답변 >

언리얼 엔진에서 객체 이름에 _C 접미사가 붙는 경우는 **블루프린트 클래스(클래스 오브젝트)**를 나타냅니다. 이 접미사는 런타임에서 해당 블루프린트의 클래스 정의를 가리킬 때 사용됩니다. 이는 C++ 클래스와 블루프린트 클래스가 상호작용할 때 자주 나타나며, 언리얼 엔진의 리플렉션 시스템에서 자동으로 생성되는 이름 규칙의 일부입니다.


상세 설명

  1. _C의 의미:
    • 접미사 **_C*는 "Class"를 의미하며, 언리얼 엔진에서 생성된 블루프린트 클래스 객체를 식별하기 위해 사용됩니다.
    • 블루프린트 클래스는 런타임 시점에 동적으로 로드되므로, 블루프린트 클래스의 실제 정의를 가리킬 때 _C가 붙습니다.
  2. 어디에서 사용되는가:
    • 블루프린트를 통해 정의된 액터나 객체의 클래스 이름을 런타임에서 참조할 때 사용됩니다.
    • 예를 들어, MyActor라는 이름의 블루프린트를 사용할 경우, 런타임에서는 이를 MyActor_C로 식별합니다.

활용 사례

1. 블루프린트 클래스 로드

  • UClass를 통해 블루프린트 클래스를 로드할 때 _C 접미사가 사용됩니다.
UClass* MyActorClass = LoadObject<UClass>(nullptr, TEXT("/Game/Blueprints/MyActor.MyActor_C"));
if (MyActorClass)
{
    GetWorld()->SpawnActor<AActor>(MyActorClass);
}

  • MyActor.MyActor_C는 MyActor 블루프린트의 클래스 정의를 나타냅니다.

2. 블루프린트 생성 시 런타임 클래스 참조

  • 블루프린트에서 C++ 코드로 상호작용하거나, 런타임에서 클래스를 동적으로 생성하는 경우 _C 접미사를 확인해야 할 때가 있습니다.

블루프린트 객체와의 차이점

  • MyActor: 특정 블루프린트 이름을 나타냅니다. 에디터에서 작업 중인 블루프린트를 가리킵니다.
  • MyActor_C: 런타임에서 블루프린트의 클래스 정의를 나타냅니다.
  • 인스턴스 이름 예시:
    • MyActor_1: 특정 블루프린트 클래스에서 생성된 첫 번째 인스턴스.
    • MyActor_2: 두 번째 인스턴스.

자주 묻는 질문

  1. 왜 _C가 필요한가요?
    • 언리얼 엔진은 에디터에서 작업하는 블루프린트 리소스와, 런타임에서 사용하는 클래스 객체를 구분해야 하기 때문입니다.
    • _C는 런타임 시점에 해당 블루프린트 클래스의 참조를 명확히 하기 위한 엔진의 네이밍 규칙입니다.
  2. 직접 _C를 붙여야 하나요?
    • 대부분의 경우, 직접 _C를 붙이지 않아도 엔진이 자동으로 처리합니다. 그러나, LoadObject나 FindClass 같은 함수에서 명시적으로 _C를 포함한 경로를 사용해야 할 수 있습니다.

결론

_C 접미사는 언리얼 엔진에서 블루프린트 클래스 정의를 런타임에서 식별하기 위해 사용됩니다. 이는 엔진의 리플렉션 시스템과 동적 클래스 로딩 메커니즘에서 중요한 역할을 하며, 블루프린트 기반 게임 개발에서 자주 접할 수 있는 중요한 개념입니다.


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


🎬 유튜브 채널 🎬

 

위로그@WiLog

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

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

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

chzzk.naver.com


반응형