언리얼에서 String을 처리하는 자료형 3가지
https://www.notion.so/j2on/StringHandling-FName-FText-FString-28b88b24e6a149069f7de5fadacb3b35?pvs=4
FName TestHUDName = FName(TEXT("ThisIsMyTestName");
언리얼에서 주로 이름에 사용되는 문자열 종류…
F로 시작하지만 구조체가 아닌 “클래스”
대소문자 구분이 안된다 ← BP에서 AbCd 로 해도 ABCD로 되는 그런 느낌
자 FName은
의 작업을 하는 경우에 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);
언리얼 엔진에서 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/
FString은 검색, 수정, 비교가 가능하다.
TestHUDString.Equals(TEXT("Test"))
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/
https://docs.unrealengine.com/5.3/en-US/string-handling-in-unreal-engine/
🪣 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 |
댓글 영역