언어:
페이지 정보
엔진 버전:
언리얼 엔진

스트링 처리

언리얼 엔진

FName

콘텐츠 브라우저에서 새 애셋 이름을 지을 때, 다이내믹 머티리얼 인스턴스의 파라미터를 변경할 때, 스켈레탈 메시에서 본에 접근할 때, 모두 FName 을 사용합니다. FName 은 문자열 사용에 있어서 초경량 시스템을 제공하는데, 주어진 문자열이 재사용된다 해도 데이터 테이블에 한 번만 저장되는 것입니다. FName 은 대소문자를 구분하지 않습니다. 변경도 불가능하여, 조작할 수 없습니다. 이처럼 FName 의 정적인 속성과 저장 시스템 덕에 찾기나 키로 FName 에 접근하는 속도가 빠릅니다. FName 서브시스템의 또다른 특징은 스트링에서 FName 변환이 해시 테이블을 사용해서 빠르다는 점입니다.

FText

FText 는 "표시되는 문자열"을 나타냅니다. 사용자에게 표시하고자 하는 텍스트는 FText 로 처리해야 합니다. FText 클래스에는 현지화 기능이 내장되어 있어, 현지화되어 룩업 테이블에 저장된 텍스트 콘텐츠 뿐만 아니라, 숫자, 날짜, 시간, 포맷 텍스트처럼 실시간 현지화되는 텍스트도 처리할 수 있습니다. 현지화할 필요가 없는 텍스트조차도 FText 로 처리 가능합니다. 여기에는 플레이어 이름처럼 사용자가 입력한 콘텐츠나, 슬레이트로 표시되는 텍스트도 포함됩니다. FText 에는 어떠한 변환 함수도 제공되지 않는데, 표시되는 문자열에 변경을 가하는 것은 매우 불안전한 작업이기 때문입니다.

FString

FName 이나 FText 와는 달리, FString 은 조작이 가능한 유일한 스트링 클래스입니다. 대소문자 변환, 부분문자열 발췌, 역순 등 사용가능한 메서드는 많습니다. FString 은 검색, 변경에 다른 스트링과의 비교도 가능합니다. 그러나 바로 그것이 FString 이 다른 불변의 스트링 클래스보다 비싸지는 이유입니다.

변환

에서

예제

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 으로 변환하는 방법이 있습니다.

FText -> FString -> FName 은 손실성 변환이라 위험합니다. FName 은 대소문자를 구분하지 않기 때문입니다.

인코딩

일반적으로 스트링 변수 리터럴 설정시에는 TEXT() 매크로를 사용해야 합니다. TEXT() 매크로를 지정하지 않으면, 리터럴은 ANSI 를 사용해서 인코딩되기에, 지원되는 글자가 크게 제한됩니다. FString 에 전달되는 ANSI 리터럴은 TCHAR (네이티브 유니코드 인코딩)으로의 변환을 겪어야 하기에, TEXT() 를 사용하는 편이 보다 효율적입니다.

인코딩 관련 상세 정보는 캐릭터 인코딩 문서를 참고해 주시기 바랍니다.