언리얼의 문자열 처리 FString과 FName, FText
언리얼에서는 문자열 처리를 위해 FString을 제공한다.
문자열을 다룰 때 사용하는 FString과 TCHAR를 변환하는 메커니즘을 사용하도록
언리얼에서는 권장하고 있다.
간단히 FString과 TCHAR를 설명하자면,
TCHAR는 문자열 배열 FString는 클래스라는 차이가 있다.
그런데 문자열 관리를 위해
FString을 제공하는데
왜 Fname, FText를 또 제공할까?
FName & FText의 제공 용도

FName과 FText는 주로 에셋관리를 위해서 사용되는 문자열 체계이다.
우리가 어떤 애셋을 빠르게 찾고 싶을 때
이름을 지정해주는 게 명확하다.
이 때, FName과 FText를 사용하는 것이다.
즉 언리얼에서 제공하는 둘의 사용 용도가 명확하다면,
사용하는 명확한 이유가 있는 것이다.
FName : 애셋 관리를 위해 사용되는 문자열 체계
이러한 이름을 FString으로 접근하게 되면 찾는데 좀 오래걸리게 된다.
그래서 문자열은 사용하지만 속도 측면에서 이점을 얻기 위해 사용하고 있다.
내부적으로는 해시값을 사용해서 바로바로 찾을 수 있게
FName이라는 클래스를 새로 제공하고
FName을 위한 구조를 시스템에서 제공하고 있다.
그래서 이 FName이라는 것은 Key, Value 쌍으로 빠르게 찾을 수 있는 문자열이다.
여기서 FName의 특징은 대소문자 구분이 없으며,
이로 인해 데이터가 깨질 수 있다.
또한 한 번 선언이 되면 Key 값이 인티저로 변환이 된다.
FText : 다국어 지원을 위한 문자열 관리 체계
일종의 키로 작용되며
별도의 문자열 테이블 정보가 추가로 요구된다.
게임 빌드 시 자동으로 다양한 국가별 언어로 변환된다.
=> 다국어를 써야하는 경우의 팀에 필요할 듯
FName의 구조와 활용
언리얼에서 제공하는 FName의 구조는
FName과 관련된 글로벌 Pool 자료구조를 가지고 있다.
이 Pool을 FNamePool이라 부른다.
이 FNamePool은 Key Value 쌍으로 저장된다.
Key를 가지고 이 Pool에 있는지 없는지를 빠르게 검출한다.

FName과 글로벌 Pool
- 문자열이 들어오면
해시 값을 추출해 키를 생성해 FName에서 보관 - FName 값에 저장된 값을 사용해
전역 Pool에서 원하는 자료를 검색해 반환한다. - 문자 정보는 대소문자를 구분하지 않고 저장한다. (Ignore Case)
FName의 형성
- 생성자에 문자열 정보를 넣으면 풀을 조사해
적당한 키로 변환하는 작업이 수반된다. - Find or Add
'UE5' 카테고리의 다른 글
언리얼 컴포지션 (1) | 2025.03.22 |
---|---|
언리얼 오브젝트 리플렉션 시스템 (0) | 2025.03.18 |
Unreal Object Handling (3) | 2024.12.19 |
언리얼 내부 - 모듈 (Modules) 2 (0) | 2024.11.25 |
언리얼 내부 - 모듈 (Modules) (0) | 2024.11.25 |