Metaverse/UE5

Reflection

onenewkong 2023. 12. 29. 15:37

: 프로그램이 실행시간에 자기 자신을 조사하는 기능

  • 에디터의 디테일 패널
  • Serialization
  • Garbage Collection
  • Network Replication
  • Blueprint / C++ Communication 

등 다수의 시스템에 탑재됨

C++은 어떠한 형태의 리플렉션도 지원하지 않아, 언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를 수집, 질의 조작하는 별도의 시스템이 구축되어 있음

전형적으로 이러한 리플렉션은 Property System이라고 부름

Replication System은 옵션임, Reflection System에 보이도록 했으면 하는 유형이나 property에 주석을 달아주면, Unreal Header Tool (UHT)가 그 프로젝트를 컴파일할 때 해당 정보를 수집

 

Property System에 대한 유형 계층 구조

UField

    UStruct

        UClass (C++ class)

        UScriptStruct (C++ struct)

        UFunction (C++ function)

    UEnum (C++ enumeration)

    UProperty (C++ member variable or function parameter)

        (Many subclasses for different types)

 

Unreal Object 구성

  • UPROPERTY: 언리얼 시스템에 의해서 관리되는 클래스 멤버 변수에 대한 매크로
  • UFUNCTION: 언리얼 시스템에 의해서 관리되는 클래스 멤버 함수에 대한 매크로
  • 매크로 안에 여러 메타 데이터를 심을 수 있음
  • UClass
    • 클래스 정보를 담은 클래스
    • 자신이 가진 프로퍼티, 클래스 이름, 함수 정보와 같은 다양한 정보를 컴파일 타임과 런타임에 조회할 수 있음
  • 언리얼 오브젝트는 일반적인 C++ 객체를 생성할 때 사용되는 new() 키워드가 아니라 NewObject() API를 사용해서 생성해야 함
  • CDO
    • 언리얼 클래스 정보에는 클래스 기본 오브젝트(CDO: Class Default Object)가 함께 포함
    • CDO는 언리얼 객체가 가진 기본 값을 보관하는 템플릿 객체
    • 한 클래스로부터 다수의 물체를 생성해 게임 컨텐츠에 배치할 때 일관성 있게 기본 값을 조정하는데 사용
    • GetDefaultObject 함수를 통해 UClass로부터 얻어올 수 있음
  • UClass와 CDO는 엔진 초기화 과정에서 생성
    • 콘텐츠 제작 과정에서 안심하고 사용 가능

 

Unreal Object 처리

  • 클래스, Property, 함수에 적합한 매크로로 마킹해주면 UClass, UProperty, UFunction으로 변함
  • 그러면 언리얼 엔진이 접근할 수 있어, 다수의 내부적인 처리 기능을 구현할 수 있음
  • 자동 프로퍼티 초기화
    • UObject는 생성자 호출 전 초기화 시 자동으로 0으로 초기화
  •  레퍼런스 자동 업데이트 
    • 자동 메모리 관리의 이점을 받을 수 있음
  • 직렬화(Serialization)
    • 언리얼 오브젝트 객체를 우리가 지정된 포맷에 맞게 저장하거나 불러들이는 것을 일괄적으로 진행할 수 있는데 저장되는 정보는 UProperty라는 것으로 명시를 해줘야 이것들만 언리얼 오브젝트에서 빼내서 디스크에 저장하고 불러들일 수 있게 됨
  • 프로퍼티 값 업데이트 하기
    • CDO를 사용해서 게임 제작 과정에서 하나의 클래스를 게임에 대해 여러 가지를 배치했을 때 기본 값을 CDO를 통해서 효과적으로 관리 가능
  • 에디터 통합
    • UProperty와 매크로 안에 메타 데이터를 넣어주면 에디터와 통합되면서 유용한 기능들을 사용할 수 있음
  • Reflection System을 사용하게 되면 런타임에 정보를 얻을 수 있고 안전하게 형변환이 가능함
  • Garbarge Collection
    • 더 이상 참조되지 않는 언리얼 오브젝트는 시스템이 자동으로 회수해서 소멸
  • Network Replication
    • Serialization과 유사한 기능
    • 네트워크 통신을 통해서도 UProperty를 자동으로 전송하고 받을 수 있게 되는 시스템이 자동으로 구축되어 있음

'Metaverse > UE5' 카테고리의 다른 글

RPC  (0) 2024.01.29
Network  (0) 2024.01.29
Animation  (1) 2024.01.25
MyVox - Player Move(1)  (0) 2024.01.25
Garbage Collection  (0) 2023.12.28