상세 컨텐츠

본문 제목

🆎Unreal에서의 StringHandling(FName, FText, FString)

Study/UNREAL

by J2on 2024. 2. 8. 23:37

본문

언리얼에서 String을 처리하는 자료형 3가지

 

https://www.notion.so/j2on/StringHandling-FName-FText-FString-28b88b24e6a149069f7de5fadacb3b35?pvs=4

 

StringHandling(FName, FText, FString) | Notion

언리얼에서 String을 처리하는 자료형 3가지

j2on.notion.site

 

 

FName

 

 

FName TestHUDName = FName(TEXT("ThisIsMyTestName");

언리얼에서 주로 이름에 사용되는 문자열 종류…

 

F로 시작하지만 구조체가 아닌 “클래스”

 

대소문자 구분이 안된다 ← BP에서 AbCd 로 해도 ABCD로 되는 그런 느낌

 

 

자 FName은

  1. 콘텐츠 브라우저에서 새 에셋에 이름을 정하거나
  2. Dynamic Material instanc의 parameter를 바꾸거나
  3. Skeletal mesh의 Bone에 접근하는 경우등등등등등등….

의 작업을 하는 경우에 FName을 사용한다.

 

 

FName은 매우 가볍다!

 

이 FName은 Unreal에서 Data Table에서 관리된다.

 

Data Table은 FNames 구조로 이루어져 있는데,

 

Table에 각 FName의 주소를 Pointing하는 Pointer를 저장한다.

 

그래서 에셋의 이름을 변경해도 주소가 바뀌지 않기 때문에 문제가 없는 것

 

 

 

FName으로 변환

 

FStirng → FName 가능

 

 

 

 

TestHUDName = FName(*TestHUDString);

FText → FName 불가능

FText → FString → FName은 추천되지 않음.

 

 

 

FName에서 변환

 

FName → FString 가능

 

 

TestHUDString = TestHUDName.ToString();

 

 

FName → FText 가능

 

 

TestHUDText = FText::FromName(TestHUDName);
 

FName

Reference for creating, converting, and comparing FNames in Unreal Engine.

docs.unrealengine.com

 

 

 

FText

언리얼 엔진에서 Text를 나타내는 클래스

 

Text Localization의 핵심요소이다 ← 한글화 / 영문화 그런 Localization을 말하는 듯

 

그래서 Text의 로컬라이징(다국어 지원)에 대한 메타데이터를 포함

 

FName → FText 가능

 

 

 

TestHUDText = FText::FromName(TestHUDName);

 

 

FString→ FText 가능

 

 

TestHUDText = FText::FromString(TestHUDName);

 

 

FText → FString 가능

 

 

FString MyString = MyText.ToString();

 

그런데! FText → FString 과정에서

 

FText의 Localization Data가 유실될 수 있다.

 

https://docs.unrealengine.com/5.3/en-US/ftext-in-unreal-engine/

 

FText

Reference for creating, converting, comparing, and more with FText in Unreal Engine.

docs.unrealengine.com

 

 

 

FString

FString은 검색, 수정, 비교가 가능하다.

  • 검색 : 문자열 내 어떤 문자열이 있는지 검사
    • .Contains(), .Find()로 확인
  • 수정 : 문자열 내 특정 Index 수정
    • MyString[3] = ‘2’ 이런 식으로 index기반 수정 가능
  • 비교 : FString간 같은지 비교가 가능
    • TestHUDString.Equals(TEXT("Test"))

 

 

Printf

 

FString은 Printf를 통한 출력이 가능하다.

 

 

 

const FString TimeDesc = FString::Printf(TEXT("%02d:%02d"), NumMinutes, NumSeconds);

 

 

끝으로 Encoding 시에

 

TEXT(”123”) 이런식으로 TEXT 매크로를 사용하는 것을 권장한다.

 

TEXT매크로를 사용하지 않는 경우 TCHAR가 아닌 ANSI 방식으로 인코딩 되어 글자 표현에 제한이 생긴다.

 

https://docs.unrealengine.com/5.3/en-US/fstring-in-unreal-engine/

 

FString

Reference for creating, converting, comparing, and more with FStrings in Unreal Engine.

docs.unrealengine.com

 

 

 

https://docs.unrealengine.com/5.3/en-US/string-handling-in-unreal-engine/

 

String Handling

An overview of the string classes available in Unreal with reference guides for FName, FText, and FString.

docs.unrealengine.com

 

'Study > UNREAL' 카테고리의 다른 글

🪣 UNREAL Containers - TMap, TMultiMap  (0) 2024.02.09
🪣UNREAL Containers - TArray  (0) 2024.02.09
언리얼 엔진의 포인터  (0) 2024.02.08
🗑️언리얼의 GC (Garbage Collection)  (0) 2024.02.07
👾 UStruct , UObject , UClass  (0) 2024.02.07

관련글 더보기

댓글 영역