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 클래스가 있다.
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] 스레드와 단일 스레드로 실행시키기 (-norenderthread) (0) | 2023.08.12 |
---|---|
[Unreal] UENUM 메타데이터 종류 (0) | 2023.07.07 |
[Unreal] UENUM 명칭 주기 (애님 블루프린트) (0) | 2023.07.06 |
[Unreal] Idle 애니메이션 무작위로 실행 (0) | 2023.06.11 |
[Unreal] enum 타입을 FString 형태로 변환 (0) | 2023.06.11 |