UE5

언리얼 문자열 처리 FString과 FName, FText 사용 이유

뽀또치즈맛 2025. 3. 8. 23:53

 

언리얼의 문자열 처리 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