본문 바로가기
게임 개발/Unreal Engine

[Unreal Engine] FName, FText, FString 비교

by 불타는홍당무 2021. 12. 29.

UDN 링크 : https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/

 

스트링 처리

UE4 에서 사용가능한 스트링 클래스에 대한 개요와 FName, FText, FString 에 대한 참고 안내서입니다.

docs.unrealengine.com

FName

문자열 사용에 있어서 초경량 시스템을 제공하며, 주어진 문자열이 재사용된다 해도 데이터 테이블에 한 번만 저장되는 것이 특징이다. FName 은 대소문자를 구분하지 않는다. 변경도 불가능하여, 조작할 수 없다.

[예]

- 어셋 이름

- 머티리얼 파라미터

- 액터 태그명

- 스케레탈 본 이름

FText

로컬라이제이션 전용 문자열 클래스. 유저에게 보여지는 모든 텍스트는 이 FText 클래스를 사용해야 한다. UMG 텍스트 컴포넌트에 FText를 사용한다.

[예]

- HUD에서 보여지는 모든 텍스트

- 유저 인풋 텍스트

- Creating localized text literals?

- 텍스트 포맷

- 숫자를 텍스트로 변환

- 날짜/시간을 텍스트로 변환

- 기존 텍스트를 upper case, lower case로 변환

FStrings

FText, FName과 달리 텍스트 조작이 가능한 클래스. 대소문자 변환, 부분문자열 발췌, 역순 등의 함수를 제공한다. 검색, 변경, 비교도 가능합니다. 때문에 FText, FName보다 자원을 더 소모한다.

[예]

- URL 만들기

- 저장파일 이름 생성

변환

FName FString TestHUDString = TestHUDName.ToString();
FName FText TestHUDText = FText::FromName(TestHUDName);
FName -> FText 는 가능한 경우도 있지만, FName 의 내용이 FText 의 "자동 현지화" 적용을 받지 못할 수 있음에 주의해야 한다.
FString FName TestHUDName = FName(*TestHUDString);
FString -> FName 은 손실성 변환이라 위험하다. FName 은 대소문자를 구분하지 않는다.
FString FText TestHUDText = FText::FromString(TestHUDString);
FString -> FText 은 가능한 경우도 있지만, FString 의 내용이 FText 의 "자동 현지화" 적용을 받지 못할 수 있음에 주의해야 한다.
FText FString TestHUDString = TestHUDText.ToString();
FText -> FString 은 안전하지 않다. 일부 언어에서는 변환시 손실될 위험이 있다.
FText FName FText 에서 FName으로의 직접 변환은 없다. 대신, FString 을 거친 다음 FName 으로 변환하는 방법이 있다.