ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unreal] UCLASS와 UPROPERTY 매크로
    프로그래밍/Unreal 2024. 7. 26. 19:05
    728x90
    반응형

    언리얼 엔진에서 UCLASS()UPROPERTY() 매크로는 언리얼 오브젝트 시스템의 핵심적인 요소입니다. 이들 매크로는 언리얼 엔진의 리플렉션 시스템을 통해 클래스와 클래스 멤버를 관리하고, 블루프린트, 시리얼라이제이션, 에디터 기능 등을 사용할 수 있도록 합니다.

    UCLASS()

    UCLASS() 매크로는 클래스 선언 앞에 사용되어, 해당 클래스가 언리얼 오브젝트 시스템에 의해 관리될 것을 나타냅니다. UCLASS() 매크로를 사용하면, 클래스가 다양한 엔진 기능을 활용할 수 있습니다. 예를 들어, 블루프린트에서 사용할 수 있게 되거나, 특정 속성을 가진 메타 데이터를 지정할 수 있습니다.

    예시

    UCLASS()
    class MYPROJECT_API AMyActor : public AActor
    {
        GENERATED_BODY()
    
    public:
        // 클래스의 함수와 멤버 변수를 선언합니다.
    };

    여기서 GENERATED_BODY() 매크로는 클래스의 기본 생성자 및 다른 필수 코드를 자동으로 생성합니다.

    UPROPERTY()

    UPROPERTY() 매크로는 클래스 멤버 변수 앞에 사용되어, 해당 변수가 언리얼 엔진의 가비지 컬렉션, 시리얼라이제이션, 복제, 블루프린트 접근 등의 엔진 기능과 상호작용할 수 있게 합니다.

    예시

    UCLASS()
    class MYPROJECT_API AMyActor : public AActor
    {
        GENERATED_BODY()
    
    public:
        UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay")
        int32 MyVariable;
    };

    이 예시에서 UPROPERTY() 매크로는 MyVariable 변수를 에디터에서 편집 가능하고, 블루프린트에서 읽고 쓸 수 있게 하며, "Gameplay" 카테고리에 속하도록 설정합니다.

    UPROPERTY() 매크로의 주요 속성들

    • EditAnywhere: 에디터에서 변수의 값을 수정할 수 있습니다.
    • BlueprintReadWrite: 블루프린트에서 읽고 쓸 수 있습니다.
    • BlueprintReadOnly: 블루프린트에서 읽기만 가능합니다.
    • VisibleAnywhere: 에디터에서 값을 볼 수 있지만 수정할 수 없습니다.
    • Transient: 변수는 시리얼라이즈되지 않으며, 저장되지 않습니다.
    • Replicated: 변수는 네트워크를 통해 복제됩니다.

    UCLASS() 매크로의 주요 메타데이터

    • Blueprintable: 블루프린트에서 이 클래스를 기반으로 새로운 블루프린트를 만들 수 있습니다.
    • BlueprintType: 블루프린트에서 이 클래스의 변수를 선언할 수 있습니다.
    • NotBlueprintable: 블루프린트에서 이 클래스를 기반으로 새로운 블루프린트를 만들 수 없습니다.
    • HideCategories: 에디터에서 특정 카테고리를 숨깁니다.
    • ShowCategories: 에디터에서 특정 카테고리를 표시합니다.

    이러한 매크로는 언리얼 엔진의 강력한 기능을 활용하는 데 매우 중요하며, 이를 잘 활용하면 효율적인 게임 개발이 가능합니다.

    728x90
    반응형
Designed by Tistory.