[Unreal Engine] FName, FText, FString 비교

Hongyeol Kim·2022년 1월 1일
0

언리얼 엔진

목록 보기
4/9
post-thumbnail

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

FName

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

  • 어셋 이름
  • 머티리얼 파라미터
  • 액터 태그명
  • 스케레탈 본 이름

FText

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

  • HUD에서 보여지는 모든 텍스트
  • 유저 인풋 텍스트
  • Creating localized text literals?
  • 텍스트 포맷
  • 숫자를 텍스트로 변환
  • 날짜/시간을 텍스트로 변환
  • 기존 텍스트를 upper case, lower case로 변환

FStrings

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

  • URL 만들기
  • 저장파일 이름 생성

변환

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

0개의 댓글