프로그래밍 공부
작성일
2024. 1. 12. 15:41
작성자
WDmil
728x90

언리얼에서 사용할 수 있는 스트링 처리는 FName, FText, FString으로 나누고있다.

 

각 문자열, 로컬라이징 및 텍스트 처리, 이름관리 를 위한 클래스이다.


FName

 

콘텐츠 브라우저에서 새 에셋 이름을 지을 때, 다이나믹 머티리얼 인스턴스의 파라미터를 변경할 때, 스켈레탈 메시에서 본에 접근할 대. 모두 FName을 사용한다.

 

FName은 Static데이터 마냥, 문자열 사용에 있어서 재선언을 막아주는 효과가 있는데,

 

주어진 문자열이 재사용된다고 하더라도, 데이터 테이블에는 한번만 저장된다.

 

FName에는 다음과 같은 특징이 있다.

  • FName은 대소문자를 구분하지 않는다. 대문자, 소문자를 구분없이 탐색, 저장한다.
  • 변경할 수 없다. ( 정적인 데이터 이기 때문에 )
  • 조작할 수 없다. ( 선언 이후 정적데이터 이기 때문에, 런타임상 조작이 불가능 )
  • FName은 정적인 속성과 저장 시스템 덕에 찾기나 키로 FName에 접근하는 속도가 빠르다.
  • 스트링에서 FName변환이 해시테이블 형태로 저장된다.

FText

 

언리얼엔진에서 텍스트 현지화를 위한 주요 컴포넌트 클래스이다.

 

FText는 모든 사용자 대상으로 다음과 같은 기능을 제공하고, 텍스트 지역화를 지원한다.

  • 텍스트 현지화 지원( FText는 ITextData로의 연결된 TSharedRef를 구현한다. 사용비용이 매우 저렴)
  • 텍스트 서식 지정( 현지화 지원기능의 기본기능)
  • 숫자에서 텍스트 생성( 숫자를 그대로 toString형태로 변환이 가능)
  • 날짜와 시간에서 텍스트 생성 ( 오바로딩을 통해 데이터변환작업을 지원)
  • 텍스트를 전부 대문자, 소문자로 만드는등, 파생텍스트 생성기능 지원.

주로, 외부 API플레이어의 이름을 사용자 인터페이스에 표시하는. 이름변환 또는 데이터 전달방식에 유용하다.

 

FText는 FString과 상호변환을 지원한다.

그러나나, FText의 현지화 데이터에 연결된 문자열이 포함되어 있을 경우, FString은 문자열만 포함하기 때문에, 데이터의 손실이 발생할 수 있다. (언리얼 인터페이스에서 한글을 쓸 수 있지만, 인텍스트 에 써넣으면 네모가 나오는 이유)

 

즉, FString은 현지화를 지원하지 않는다.

 

대체 방법으로 텍스트값 마샬링( FString은 단순 문자데이터만 저장함으로 로컬라이징 정보를 따로 패키징하는 방법)

을 사용하여 전달할 수는 있다.

 

FText데이터는 단순 String문자열처럼 사용되지 않고, 더 복잡한 데이터구조를 가지고 있기 떄문에, 단순 비교연산을 지원하지 않는다.

 

그러나, 포함된 데이터를 비교하는 비교용 함수를 제공한다.

 


FString

 

FText와 FName과 다르게, 조작이 가능한 유일한 스트링 클래스이다.

 

대소문자 변환, 부분문자열 발췌, 역순정렬 등 다양한 메서드를 지원한다.

 

FString은 검색, 변경에 다른 스트링과 비교또한 가능하다.

 

위와같은 다양한 기능을 지원하기 때문에, 다른 문자타입보다 더 사용비용이 비싸다.

 

대부분 String문에서 사용 가능한 모든 기능을 사용할 수 있다.

 

bool, int , float등 타입변환

 

== 연산자를 사용한 String 비교, 문자열 비교, FString 내부의 문자열 검색, 다른 FString과의 결합 제거 등을 전부 지원한다.

 

사실 웬만한 문자열로 할 수 있는 기능을 다 사용할 수 있다.

728x90