1. 리플렉션(Reflection)
- c++ 클래스 내의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Item.generated.h"
UCLASS()
class SPARTAPROJECT_API AItem : public AActor
{
GENERATED_BODY()
public:
AItem();
protected:
USceneComponent* SceneRoot;
UStaticMeshComponent* StaticMeshComp;
float RotationSpeed;
virtual void BeginPlay() override;
virtual void Tick(float DeltaTime) override;
};
- Item.generated.h : 자동으로 생성되는 헤더파일로 클래스의 리플렉션 및 엔진 통합에 필요한 코드가 들어 있음.
- UCLASS() : 해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미
- GENERATED_bODY() : 클래스 내부에 필요한 리플렉션 정보를 자동으로 생성
2. UCLASS() 매크로 주요 지정자
- Blueprintintable : 상속가능한 클래스로 만든다.
- NotBlueprintable : 클래스를 상속할 수 없도록 한다.
- BlueprintType : 변수나 참조로 사용할 수 있게 한다.
3. UPROPERTY() 매크로 주요 지정자
1) 편집 가능 범위 지정자
- VisibleAnywhere: 읽기전용, 수정 불가능
- EditAnywhere : 클래스 기본값
- EditDefaultOnly : 클래스 기본값에서만 수정 가능
- EditInstanceOnly : 인스턴스에서만 수정가능
2) 블루프린트 접근지정자
- BlueprintReadWrite : 블루프린트 내에서 Get/Set으로 값을 읽거나 쓸 수 있음
- BlueprintReadOnly : Get핀만 노출되어 읽기만 가능
3) Category 지정자
- Details 패널에서 Rotation범주(폴더)아래에 표시됨
4) 메타 옵션 지정자
- meta(ClampMin="0.0") : 에디터에서 변수 입력시 최소값을 제한할 수 있다.
-meta=(AllowPrivateAccess="true") : 해당 멤버가 private이여도 에디터나 블루프린트에서 접근 허용
5) 추가 지정자가 없는 경우
- 리플렉션에는 등록되지만 에디터나 블루프린트에는 노출 x