Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- BFS
- enumasByue
- UML관련
- 람다
- UE4 커스텀로그
- stl
- 애셋로드
- 크리티컬섹션
- 언리얼엔진구조체
- 언리얼가비지컬렉터
- 알고리즘
- 자료구조
- 강참조
- 정렬알고리즘
- moreeffectiveC++
- 델리게이트
- 프로그래머스
- 선택정렬
- UELOG
- map
- C++
- dataasset
- 람다사용정렬
- 스마트포인터
- 데이터애셋
- 약참조
- unorder_map
- C++최적화
- 정렬
- UE_LOG
Archives
- Today
- Total
기억을 위한 기록들
[UE4-CPP] UENUM에서의 비트마스크 사용 본문
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 클래스가 있다.
'UnrealEngine > UE4 - CPP' 카테고리의 다른 글
[UE4-CPP] FString::Format에 도움이 되는 FStringFormatArg에 관하여 (0) | 2022.05.15 |
---|---|
[UE4-CPP] unimplemented 매크로에 대하여 (2) | 2022.04.26 |
[UE4-CPP] [애셋로딩에 관하여] 애셋 참조 방식 2가지(강참조와 약참조) (1) | 2022.03.06 |
[UE4-CPP] 데이터 유형 형식<CSV> vs <Json> (0) | 2022.02.22 |
[UE4 - CPP] TFunctionRef<T>에 관하여 (0) | 2022.02.02 |