https://www.unrealengine.com/ko/blog/unreal-property-system-reflection
UENUM()
UCLASS()
USTRUCT()
UFUNCTION()
UPROPERTY()
UENUM(BlueprintType)
enum class EInputActionType : uint8
{
MOVE,
ROTATION,
JUMP,
SPINT_TOGGLE,
ATTACK,
FIRE,
RELOAD,
};
열거형, 클래스, 구조체, 함수, 변수를 선언할 때 이러한 매크로를 앞에 달아야 한다는 것은 알겠으나그래서 무슨 역할을 하는지 궁금하여 찾아보았다.
결론부터 말하자면, 이것은 언리얼 프로퍼티 시스템이며 C#, Java 등에서 사용하는 리플렉션(Reflection)을 가능하게 해주는 매크로다.
참고로 리플렉션은 쉽게 말하면 타입 정보를 가져오는 기능으로 유니티를 사용해 봤다면 리플렉션은 못 들어봤어도 GetType()은 써본 경험이 있을 것이다.
C++은 기본적으로 이렇게 타입을 알 수 있게 해주는 시스템을 지원하지 않는다.
그래서 사용자가 직접 UCLASS() 등 매크로를 붙임으로서 타입을 명시하면 언리얼 엔진이 정보들을 수집하여 리플렉션 시스템을 제공하는 것이다.
리플렉션이 필요 없다면 굳이 붙이지 않아도 상관은 없으나
언리얼의 어떠한 기능 안에서 리플렉션 시스템을 사용하고 있다면 제대로 작동되지 않는 위험성이 있으니 주의하여 사용하도록 하자.