https://www.youtube.com/watch?v=VpEe9DbcZIs&t=9s
이 글은 해당 영상을 정리한 글입니다.
UObject
언리얼 엔진에서 제공하는 클래스들은 베이스 클래스로 UObject를 상속받아 생성됨
리플렉션
- 리플렉션
런타임중 객체의 유형이나 속성을 볼 수 있게 해주는 기능
리플렉션이 필요한 이유
- 다른 모듈에 정의된 사용자 클래스 객체들도 엔진 내의 시스템이 관리해야 함
- 컴파일 타임에는 해당 클래스들을 알 수 없음 그래서 런타임 리플렉션이 필요
리플렉션 지정
일반 C++클래스들은 해당 매크로들을 지정하지 못함
언리얼 C++의 클래스와 구조체 차이
C++에선 클래스와 구조체의 차이점이 없지만 언리얼 C++에선 위 표와같이 차이점이 있음
언리얼 헤더 툴
- 작성한 코드들은 언리얼 헤더 툴에 의해 먼저 분석됨
- UCLASS 매크로가 붙은 클래스들을 찾아 리플렉션 정보를 수집
- 언리얼 헤더툴 실행
- C++ 컴파일러 실행
수집한 리플렉션 정보를 통해 런타임중 리플렉션 객체들을 생성하기 위한 코드들을 언리얼 헤더 툴이 자동으로 생성함
리플렉션 객체
UCLASS
UCLASS 매크로가 붙은 클래스는 위 그림과 같이 리플렉션 객체들이 생성됨
Name에 클래스이름을 저장, 포인터를 통해 자식객체를 저장함
UPROPERTY
UPROPERTY의 리플렉션 객체는
- 자기를 소유한 클래스의 정보
- AActor의 이름과 클래스 정보를 가르키는 포인터
- int의 이름을 저장한 UIntProperty
로 구성됨
UFUNCTION
UFUNCTION 리플렉션 객체는
- 자기를 소유한 클래스 정보
- 함수 정보
- 매개변수 정보
- 리턴변수 정보
로 구성됨
UFUNCTION 은 매개변수, 리턴값을 가지고 있는 USTRUCT로 구분할 수 있음
ex) 네트워크 RPC를 호출할때 구조체의 레이아웃을 사용해 패킷을 전송
리플렉션을 사용하는 언리얼 시스템들
런타임중 객체의 정보를 알 수 있는 리플렉션에 여러 시스템들이 의존함
- 네트워크 리플리케이션
- 블루프린트 ↔ C++ 연동
- 언리얼 에디터 연동
- 자동 시리얼라이제이션
- 가비지 컬렉션
'Unreal Engine > Unreal 기초' 카테고리의 다른 글
UnrealEngine 가비지 컬렉션 (0) | 2025.04.01 |
---|---|
UnrealEnigne Cpp에서 Level 재시작 (0) | 2025.02.07 |
UnrealEnigne Cpp함수를 블루프린트에서 사용 (0) | 2025.02.07 |
UnrealEnigne 헤드업디스플레이 구현 및 초기화 프로세스 (0) | 2024.12.18 |
UnrealEnigne 행동트리(Behavior Tree) 모델 (0) | 2024.11.05 |