시작하며
언리얼 엔진에서는 블루프린트에서도 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로 적용한 화면
요약
- 언리얼 엔진에서는 비트 플래그 변수를 블루프린트 타입 변수로도 표현 가능하다
반응형