관리 메뉴

기억을 위한 기록들

[UE4-CPP] UENUM에서의 비트마스크 사용 본문

UnrealEngine/UE4 - CPP

[UE4-CPP] UENUM에서의 비트마스크 사용

에드윈H 2022. 4. 24. 16:00

enum 선언 예

UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true"))
enum class EItemGradeInfo 
{
	// 일반 아이템
	Common ,

	// 레어 아이템
	Rare ,

	// 레전드 라이템
	Legend,
};
ENUM_CLASS_FLAGS(EItemGradeInfo);

 

 

사용 할 곳 예

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo"))
	uint8	ItemGradeInfo = 0;

 

 

 

void DoSomething(const EItemGradeInfo info)
{
    if(EItemGradeInfo::Common & static_cast<int8>(info) ==true)
    {
    	//일반등급 아이템 입니다.
    }
}

이렇게 하면 된다 생각해야하지만 엔진내부의 이상한점떄문에 1바이트 밀어줘야한다.

 

 

void DoSomething(const EItemGradeInfo info)
{
    if(EItemGradeInfo::Common & 1<<(static_cast<int8>(info)) ==true)
    {
    	//일반등급 아이템 입니다.
    }
}

 

 

혹은 같이 사용하기 좋은 클래스로  TEnumAsByte 클래스가 있다.