Unreal 개발 본 캠프 30일차

HappyCircle·2026년 1월 9일

Unreal 개발

목록 보기
47/163

오늘 학습 진행 내용

C++와 Unreal Engine으로 3D 개발

리플렉션 (Reflection)이란?

언리얼 엔진의 리플렉션 시스템은 C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술

  • #include "Item.generated.h"
    • 언리얼 엔진이 자동 생성하는 헤더 파일로, 클래스의 리플렉션 및 엔진 통합에 필요한 코드 포함
    • 반드시 헤더 파일의 가장 마지막 #include 구문 아래에 위치
  • UCLASS()
    • 해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미
  • GENERATED_BODY()
    • 언리얼의 코드 생성 도구가 사용하는 코드를 삽입하는 역할

    • 클래스 내부에 필요한 리플렉션 정보를 자동으로 생성

      리플렉션 시스템 활용해서 멤버 변수와 함수 블루프린트에서 사용할 수 있게 설정
      함수의 경우 UFUNCTION, 멤버 변수의 경우 UPROPERTY 사용해서 설정

UPROPERTY() 매크로의 주요 지정자
1.
편집 가능 범위 지정자
- VisibleAnywhere: 읽기 전용으로 표시되며, 수정은 불가능
- EditAnywhere: 클래스 기본값, 인스턴스 모두에서 수정 가능
- EditDefaultsOnly: 클래스 기본값에서만 수정 가능
- EditInstanceOnly: 인스턴스에서만 수정 가능
2.
Blueprint 접근성 지정자
- BlueprintReadWrite: Blueprint 그래프에서
Getter/Setter로 값을 읽거나 쓸 수 있습니다.
- BlueprintReadOnly: Blueprint 그래프에서
Getter 핀만 노출되어, 읽기만 가능합니다.
3.
Category 지정자
- Details 패널에서 이 변수는 “Rotation” 범주(폴더) 아래에 표시됩니다.
- 여러 변수를 비슷한 카테고리에 묶으면, 세부 정보 패널에서 깔끔하게 정리되어 보입니다.
4.
메타 옵션 지정자
- meta=(ClampMin="0.0"): 에디터에서 변수 입력 시
최소값**을 제한할 수 있습니다.
- meta=(AllowPrivateAccess="true"): 해당 멤버가 private로 선언되어 있어도, 에디터나 Blueprint에서 접근할 수 있도록 허용합니다.

UFUNCTION() 매크로의 주요 지정자
- BlueprintCallable
- Blueprint 이벤트 그래프(노드)에서 호출(Execute) 가능한 함수로 만듭니다.
- BlueprintPure
- Getter 역할만 수행합니다. (Exec 핀 없이 Return Value만 노출)
- BlueprintImplementableEvent
- 함수의 선언만 C++에 있고, 구현은 블루프린트에서 하도록 합니다. C++ 코드에서는 함수 이름만 정의하고, 실제 동작은 Blueprint Event Graph 안에서 이벤트 노드처럼 구현됩니다.

   protected:
	//루트 컴포넌트를 나타내는 Scene Coomponent 포인터
	
	
	//멤버 변수를 리플렉션 시스템에 노출
	//리플렉션 시스템 등록
	// Root Scene Component, 에디터에서 볼 수만 있고 수정 불가
	UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category="Item|Components")
	USceneComponent* SceneRoot;
	// Static Mesh, 에디터와 Blueprint에서 수정 가능
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Item|Components")
	UStaticMeshComponent* StaticMeshComp;

	UPROPERTY(EditDefaultsOnly,BlueprintReadOnly,Category="Item|Components")
	float RotationSpeed;

	// 함수를 블루프린트에서 호출 가능하도록 설정
	UFUNCTION(BlueprintCallable,Category="Item|Actions")
	void ResetActorPosition();

	// 블루프린트에서 값만 반환하도록 설정
	UFUNCTION(BlueprintPure,Category="Item|Properties")
	float GetRotationSpeed() const;

	// C++에서 호출되지만 구현은 블루프린트에서 수행
	UFUNCTION(BlueprintImplementableEvent,Category = "Item|Event")
	void OnItemPickedUp();

실제 블루프린트에서 반영되서 이벤트 그래프에서 확인 가능

profile
개발합시다!

0개의 댓글