Taene's
[U C++] Class - FName 본문
FName과 FText의 특징
- FName: 에셋 관리를 위해 사용되는 문자열 체계
- 대소문자 구분이 없다.
- 한번 선언되면 (key로 만들어져 int로 변환되기 때문에) 바꿀 수 없다.
- 가볍고 빠르다.
- 빌드 시 key-value 쌍의 해시값으로 변환되어 빠르게 원하는 에셋을 찾을 수 있다.
- FText: 다국어 지원을 위한 문자열 관리 체계 (UI에서 다국어 지원할 때 사용)
- 일종의 키로 작용한다.
- 별도의 문자열 테이블 정보가 추가로 요구된다.
- 게임 빌드 시 자동으로 다양한 국가별 언어로 변환된다.
FName의 구조
- FNamePool: FName들을 보관하는, 싱글톤으로 되어있는 글로벌 pool
FName의 활용
FName key1(TEXT("PELVIS"));
FName key2(TEXT("pelvis"));
UE_LOG(LogTemp, Log, TEXT("FName 비교 결과: %s"), key1 == key2 ? TEXT("같음") : TEXT("다름"));
//LogTemp: FName 비교 결과: 같음
for (int i = 0; i < 10000; ++i)
{
FName SearchInNamePool = FName(TEXT("pelvis"));
const static FName StaticOnlyOnce(TEXT("pelvis"));
}
- 위 처럼 FName의 선언을 for문이나 Tick()에 선언하게 되면, FName은 문자열을 key로 변환한 다음에 그 key가 전역 pool에 있는지 조사하는 작업을 하기 때문에 오버헤드(overhead)가 발생할 수 있다.
- 따라서 local static으로 선언해서 처음 초기화할 때 데이터를 저장하여 다음부터 찾을 일이 없도록 한다.
'Unreal5 > Unreal C++' 카테고리의 다른 글
[U C++] Interface (0) | 2024.07.06 |
---|---|
[U C++] Unreal Object & Reflection System (0) | 2024.07.05 |
[U C++] Class - FString (0) | 2024.07.04 |
[U C++] Unreal C++ type and size (0) | 2024.07.04 |
[U C++] UE Coding Style (0) | 2024.07.03 |