Unreal Macro 선언 및 flag

  • UCLASS( )
  • UENUM( )
    • BlueprintType : Blueprint에서 read / write 가능
  • USTRUCT
    • Atomic : 하나단위로 직렬화
    • BlueprintType : Blueprint에서 read / write 가능
  • UFUNCTION( )
    • BlueprintCallable : Blueprint에서 사용 가능
    • Category = <string>("TopCategory|SubCategory|Etc") : function은 필수 항목
  • UPROPERTY( )
    • EditAnywhere / VisibleAnywhere : architecture type / level에 배치된 instance 양쪽에서 수정 가능
    • BlueprintReadWrite / BlueprintReadOnly : blueprint에서 read, write
    • Category = <string> : detail 패널에서 categorizing

 

Refleaction System

클래스 관리, 참조, 접근을 위해 클래스 포맷을 관리하는 시스템

  • C#이나 Java같은 후발 객체지향언어에는 언어자체에서 구현되어있는 개념

 

UBT(unreal build tool) 및 UHT(unreal header tool)을 통해 모사

  • 클래스 생성 시, 클래스에 대한 형태를 관리하는 매크로를 자동 생성
  • 런타임에 클래스 포맷 혹은 포맷분석을 통해 역으로 바이너리 데이터를 탐색/조작하기 위함 ( 자기 자신을 파악 )
  • UHT에 의해 만들어진 리플렉션 포맷 파일은 intermediate 폴더 내에 자동으로 생성
    • 구문이 변경될떄마다 자동으로 수정됨
    • 컴파일 분석 수준의 기능은 제공하지 않음
  • 주 용도
    • 런타임에 class내의 property 접근(읽기/쓰기) ( editor환경 등 )
    • 직렬화
    • 자체적인 GC시스템
  • 주 관리
    • <UClass> {class}::staticclass를 통해 class포맷에 접근 가능 ( 자기자신은 getClass() )
      • createdefaultsubobject(cdo), newobject(runtime)
      • <UProperty> FindPropertyByName
    • 생성자에서 명시한 건 CDO(class default object) 수준에서 관리 ( UClass에서 CDO를 참조함 )
    •  
  • 클래스 하이어라키
    • UField
      • UStruct
        • UClass
        • UScriptStruct
        • UFunction
      • UEnum
      • UProperty

 

'Unreal > UE Architecture' 카테고리의 다른 글

Cpp -> BP Pipeline 1  (0) 2024.05.17
문자열 처리  (0) 2024.05.16
Smart Pointer & Container & Serialize  (0) 2024.05.16
Input  (0) 2024.05.16
기본 구성  (0) 2024.05.16

+ Recent posts