- 언리얼 프로퍼티 시스템 (리플렉션)2024년 09월 11일
- imaginaring
- 작성자
- 2024.09.11.:55
도큐먼트 : https://www.unrealengine.com/ko/blog/unreal-property-system-reflection
C++에서는 컴파일 시점에 모든 클래스, 변수, 함수의 정보가 고정되지만, 언리얼 엔진의 리플렉션 시스템을 통해 런타임에 클래스의 속성에 동적으로 접근할 수 있습니다.
이는 주로 언리얼 엔진의 에디터, 블루프린트, 그리고 직렬화 기능과 밀접하게 연관됩니다.
언리얼 리플렉션: 언리얼 엔진에서는 UCLASS, UPROPERTY, UFUNCTION과 같은 매크로를 사용해 클래스나 변수, 함수가 언리얼 엔진의 리플렉션 시스템에 등록됩니다. 이를 통해 에디터에서 클래스 정보를 노출하거나 런타임에 동적으로 다룰 수 있습니다.
리플렉션 시스템 덕분에 언리얼 에디터에서 C++ 코드를 블루프린트로 노출시키거나, 변수를 에디터에서 실시간으로 수정할 수 있습니다. 이를 통해 개발자는 코드를 수정하지 않고도 언리얼 에디터를 통해 게임의 속성을 쉽게 조정할 수 있습니다.
동적 메타데이터 처리
- C++: 일반적인 C++ 코드에서는 프로그램이 실행될 때 데이터의 구조를 동적으로 처리할 수 있는 내장 기능이 없습니다. 만약 동적인 처리가 필요하다면, 직접 로직을 구현해야 합니다.
- 언리얼 리플렉션: 리플렉션 시스템은 클래스, 변수, 함수에 대한 메타데이터를 자동으로 처리합니다. 예를 들어, 객체의 프로퍼티를 자동으로 직렬화하여 저장하고 불러오는 작업이 가능해집니다. 이 기능은 특히 네트워크 동기화나 저장/불러오기 시스템에서 유용합니다.
언리얼 리플렉션을 사용한 C++ 클래스 정의
UCLASS()
class AMyCharacter : public AActor
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Stats")
int32 Health;
UFUNCTION(BlueprintCallable, Category="Gameplay")
void TakeDamage(int32 DamageAmount);
};UPROPERTY와 UFUNCTION을 통해 Health 변수와 TakeDamage 함수를 언리얼 리플렉션 시스템에 등록했습니다. 이로 인해 에디터에서 Health 값을 수정할 수 있고, 블루프린트에서 TakeDamage 함수를 호출할 수 있으며, 런타임에 객체의 속성에 동적으로 접근할 수 있습니다.
'게임엔진 > 언리얼' 카테고리의 다른 글
메타데이터 (0) 2024.09.11 UE5 핫리로드 / 라이브코딩 / VS 빌드 의 차이 (0) 2024.08.17 UE5 커스텀 로그 (0) 2024.08.16 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)