unreal 공부

Virus·2025년 1월 22일
  1. 리플렉션 시스템이란?
    언리얼 엔진의 리플렉션 시스템은 C++ 클래스, 변수, 함수 정보를 메타데이터로 저장하고, 이를 에디터와 블루프린트에서 활용할 수 있도록 해주는 기술입니다.

1️⃣ 리플렉션 시스템의 주요 역할
C++ 로직의 블루프린트 활용:

프로그래머가 C++로 작성한 클래스, 변수, 함수를 에디터와 블루프린트에서 직관적으로 사용할 수 있도록 지원.
디자이너는 블루프린트를 통해 프로그래머가 작성한 기능을 재사용하고, 빠르게 테스트 가능.
반복 테스트의 효율성:

변수 값을 에디터에서 직접 조정해 테스트 가능.
블루프린트를 통해 코드를 다시 빌드하지 않아도 빠르게 기능 변경 가능.
개발 협업 강화:

C++로 엔진 성능을 최적화하면서, 디자이너가 에디터에서 직관적으로 작업 가능.
실무에서는 C++와 블루프린트를 병행해 사용하며, 각각의 장점을 취하는 하이브리드 워크플로우를 선호.
2. C++ 클래스와 리플렉션
1️⃣ C++ 클래스의 리플렉션 등록
C++ 클래스는 UCLASS()와 GENERATED_BODY() 매크로를 통해 리플렉션 시스템에 등록됩니다.
이를 통해 에디터와 블루프린트에서 해당 클래스를 인식할 수 있으며, 추가적으로 상속 및 참조 설정도 가능합니다.
2️⃣ UCLASS 지정자
UCLASS() 매크로는 클래스가 블루프린트에서 어떻게 활용될지를 정의합니다.

Blueprintable: 블루프린트에서 해당 클래스를 상속 가능.
NotBlueprintable: 블루프린트에서 상속을 불허.
BlueprintType: 블루프린트에서 참조로만 사용 가능.
3. 변수 리플렉션
1️⃣ 변수 등록: UPROPERTY 매크로
변수는 UPROPERTY()를 사용해 리플렉션 시스템에 등록됩니다.
이를 통해 에디터와 블루프린트에서 변수의 표시 여부, 수정 가능 여부를 제어할 수 있습니다.

2️⃣ UPROPERTY 지정자
편집 가능 범위 지정:

VisibleAnywhere: 읽기 전용으로 표시.
EditAnywhere: 클래스 기본값과 인스턴스에서 수정 가능.
EditDefaultsOnly: 클래스 기본값에서만 수정 가능.
EditInstanceOnly: 인스턴스에서만 수정 가능.
블루프린트 접근 지정:

BlueprintReadWrite: 읽기 및 쓰기 가능.
BlueprintReadOnly: 읽기 전용.
메타 옵션:

ClampMin, ClampMax: 에디터에서 입력 값의 범위를 제한.
AllowPrivateAccess: private 변수도 블루프린트와 에디터에서 접근 가능.
4. 함수 리플렉션
1️⃣ 함수 등록: UFUNCTION 매크로
함수는 UFUNCTION() 매크로를 사용해 리플렉션 시스템에 등록됩니다.
이를 통해 블루프린트에서 함수 호출, 값 반환 등의 작업을 수행할 수 있습니다.

2️⃣ UFUNCTION 지정자
Blueprint 관련 지정자:

BlueprintCallable: 블루프린트 이벤트 그래프에서 호출 가능.
BlueprintPure: Getter 역할, 값을 반환하지만 실행 핀(Exec)은 없음.
BlueprintImplementableEvent: 선언은 C++에서 하지만, 구현은 블루프린트에서 처리.
기타 옵션:

Server, Client: 네트워크 동기화를 위한 RPC 호출 설정 가능.
5. 블루프린트와 리플렉션 활용
1️⃣ 변수와 함수의 에디터 및 블루프린트 활용
리플렉션에 등록된 변수는 에디터의 Details 패널에서 실시간으로 값을 수정할 수 있습니다.
리플렉션에 등록된 함수는 블루프린트의 이벤트 그래프에서 노드 형태로 나타나며, 이를 연결해 로직을 구성할 수 있습니다.
2️⃣ BlueprintImplementableEvent의 활용
함수의 선언만 C++에서 작성하고, 구현은 블루프린트에서 처리하도록 설정할 수 있습니다.
C++ 코드에서 이 함수를 호출하면, 블루프린트에서 구현된 로직이 실행됩니다.
6. 배운 점과 느낀 점
1️⃣ 리플렉션의 중요성
리플렉션은 언리얼 엔진의 강력한 기능으로, C++와 블루프린트를 연결하여 빠른 프로토타이핑과 효율적인 개발을 가능하게 합니다.
2️⃣ 협업 효율성 극대화
프로그래머는 복잡한 로직과 성능 최적화를, 디자이너는 직관적인 인터페이스를 사용하여 작업하므로 협업 효율성이 크게 향상됩니다.
3️⃣ 실시간 테스트
에디터와 블루프린트를 통해 값이나 로직을 실시간으로 변경하고 결과를 확인할 수 있어, 반복 작업 속도가 빨라집니다.

0개의 댓글