[언리얼엔진] 비트마스크 Bitmask

    시작하며

    언리얼 엔진에서는 블루프린트에서도 integer 변수를 비트마스크로 선언하는 기능을 지원한다. 최적화를 위해 사용했던 바이너리 플래그를 블루프린트에서도 편하게 사용할 수 있다.

    Enum 정의

    블루프린트 타입을 사용하기 위해 BlueprintType 지정자를 입력하고, 추가적으로 메타데이터 지정자에 Bitflags를 입력하여 비트플래그 Enum 이 되도록 한다. 블루프린트에서 Integer 타입을 비트마스크 열거형으로 사용하고자 한다면 UseEnumValuesAsMaskValuesInEditor를 true로 입력한다. 한가지 팁을 더 말하자면 에디터에서 열거자 표시시 첫값과 마지막 값은 표시가 되지 않기때문에 정의에서 첫값과 마지막값을 정의하여 모든 열거자가 노출될 수 있도록 한다.

    UENUM(BlueprintType, meta =(Bitflags,UseEnumValuesAsMaskValuesInEditor="true"))
    enum class EElementalType : uint8
    {
        None        = 0 UMETA(Hidden),
        Fire        = 1,
        Water       = 2,
        Ice         = 3,
        Electric    = 4,
        Poison      = 5,
        Air         = 6,
        Max         = 7 UMETA(Hidden),
    };

    Bitmask 선언

    열거자와 같은 타입인 uint8로 선언하고 메타지정자에 Bitmask를 입력하고, BitmaskEnum 에 enum 이름을 입력한다.

    UPROPERTY(EditAnyWhere, BlueprintReadWrite, Category = Elemental, meta = (Bitmask, BitmaskEnum = EElementalType))
    uint8 ElementalType;

    잠깐 팁

    uint8의 경우 8비트 자료형이기때문에 0~7까지만 표시된다. 열거자의 갯수에 맞춰 저장가능한 비트크기로 설정을 하자

    에디터 확인

    디테일 창에서 설정하는 화면

    EElementalType을 블루프린트 변수에 Bitmask로 적용한 화면

    요약

    • 언리얼 엔진에서는 비트 플래그 변수를 블루프린트 타입 변수로도 표현 가능하다
    반응형

    댓글

    Designed by JB FACTORY