이전에 관련 이론을 정리한 글
Unreal Property System (Reflection)
참고자료https://unrealcommunity.wiki/unreal-property-system-(reflection)-36d1e6 Unreal Property System (Reflection) | Unreal Engine Community WikiBrief description of the Unreal Property System.unrealcommunity.wikihttps://dev.epicgames.com/documentati
gbleem.tistory.com
1. 리플렉션 이란
- 리플렉션이란!
- C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터의 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 해주는 기술
- 추가적으로 가비지 콜렉션이나, 네트워크에서도 사용할 수 있다.
2. 리플렉션 사용하기
사용에 앞서 리플렉션을 쓰기 위한 사전 준비가 필요하다
- .generated.h 헤더
- 언리얼 엔진이 자동으로 생성해주며, 클래스의 리플렉션과 엔진 통합 코드가 포함되어있다.
- 주의할 점은 #include 문들 중에서 가장 아래에 위치해야 빌드가 정상적으로 동작한다.
- UCLASS()
- 해당 클래스를 언리얼 엔진에 등록한다는 의미
- GENERATED_BODY()
- 클래스 내부에 필요한 리플렉션 정보 자동 생성
2-1. UCLASS 매크로 주요 지정자
클래스에 리플렉션을 적용하기
- default 지정자: UCLASS(Blueprintable, BlueprintType)
- Blueprintable : 블루프린트가 상속 가능
- BlueprintType : 변수로 참조 가능
- 추가 지정자
- NotBlueprintable : 블루프린트 상속 방지
2-2. UPROPERTY 매크로 주요 지정자
변수에 리플렉션을 적용하기
- 편집 가능 범위 지정자
- VisibleAnywhere : 읽기 전용으로 표시, 수정 불가능
- EditAnywhere : 클래스 기본값, 인스턴스 두 방법 모두 수정 가능
- EditDefaultsOnly : 클래스 기본값에서만 수정 가능
- EditInstanceOnly : 인스턴스에서만 수정 가능
cf) 클래스 기본값 (클래스 디폴트) 과 인스턴스의 의미
- 아래 사진과 같이 C++ 코드로 작성한 값들을 BP로 확인해 보자
- 아래 사진을 보면
- RotationSpeed는 EditDefaultsOnly이므로, BP에서 클래스 디폴트의 디테일 창에서 수정할 수 있는 것을 볼 수 있다.
- 그러나 MovingSpeed는 보이지 않는다. (EditInstanceOnly이므로)
- 아래 사진을 보면
- 월드에 해당 BP를 배치한 후 디테일 창을 확인해 본 모습이다.
- EditInstanceOnly이므로 해당 클래스를 월드에 배치해서 인스턴스화 해야 수정이 가능하다.
- RotationSpeed는 보이지 않는다.
- Blueprint 접근성 지정자
- BlueprintReadWrite : BP에서 값을 읽고 쓸 수 있다. (getter, setter 가능)
- BlueprintReadOnly : BP에서 값 읽기만 가능하다. (getter 만 가능)
- Category 지정자
- 디테일 창에서 우리가 구별하기 쉽게 보여주는 지정자이다.
- 아래 사진처럼 Item|Properties로 작성한 경우 다음과 같이 표시되는 것을 볼 수 있다.
- 메타 옵션 지정자
- meta = (ClampMin = "0.0") : 에디터에서 변수 입력 시 최솟값 제한
- meta = (AllowPrivateAccess="true") : private 멤버이지만, 에디터나 BP에서 접근가능하게 함
2-3. UFUNCTION 매크로 주요 지정자
함수에 리플렉션을 적용하기
- BlueprintCallable : 이벤트 그래프에서 호출 가능한 함수로 만들기
- BlueprintPure : getter 역할만 수행하는 함수로 만들기
- BlueprintImplementableEvent : 함수의 선언은 C++에서 하고, 구현은 BP에서 하기
'Unreal Engine' 카테고리의 다른 글
Unreal Engine - Enhanced Input System (PlayerController) (2) | 2025.01.22 |
---|---|
Unreal Engine - GameMode, Pawn, Character (0) | 2025.01.22 |
Unreal Engine - Actor의 생성과 응용 (0) | 2025.01.21 |
Unreal Engine - 개발 환경 세팅 및 빌드 프로세스 (0) | 2025.01.21 |
Unreal Engine Dedicated Server (3) | 2025.01.13 |