Unreal Engine/개념

[UE] @문자열 ( FText, FName, FString )

코딩하는상후니 2022. 8. 1. 23:04

 

 


 

 


 

 

*TEXT 매크로

 
=> 언리얼에서는 '문자열 리터럴' 을 TEXT 매크로 안에 넣어서 TEXT("Hello World") 로 넘겨주는 것이 좋음.
=> 어떤 플랫폼에서든 동작 가능하도록 언리얼에서 인코딩. ( 크로스 플랫폼 환경 )

 

 

 

 


 

 

*FName

 
=> 콘텐츠 브라우저에서 새 애셋 이름을 만들 때,
=> 다이나믹 머터리얼 인스턴스의 파라미터를 변경할 때,
=> Skeletal Mesh Bone 에 접근할 때,
 
=> 문자열 사용에 있어서 초경량 시스템 제공
-> 주어진 문자열이 사용된다 해도 데이터 테이블에 한번만 저장됨.
=> 대소문자 구분 X, 변경 불가, 조작 X
 
=> FName 의 정적인 속성과 저장 시스템 덕에 키 값으로 FName 에 접근하는 속도가 굉장히 빠르다.
=> String 에서 FName 변환이 해시 테이블 사용해 빠름.

 

 


 

 

*FText

 
=> 텍스트 지역화의 주요 구성 요소 클래스.
=> 주로 UI 에서 사용
Slate / UMG
HUD / Canvas
 
=> 모든 사용자 대면 텍스트는 다음 기능을 제공하여 텍스트 지역화를 지원하므로 FText 클래스를 사용해야함.
- 지역화된 텍스트 리터럴 생성
- 텍스트 서식(자리 표시자 패턴에서 텍스트)를 생성
- 숫자에서 텍스트를 생성
- 날짜와 시간에서 텍스트를 생성
- 텍스트를 상위 또는 소문자로 만드는 것과 같은 파생된 텍스트를 생성
 
 
* FText 생성하기
// Create a new FCanvasTextItem instance to contain the text. 
FCanvasTextItem TextItem(FVector2D::ZeroVector, TestHUDText, BigFont, FLinearColor::Black); 
// Add the text into the FCanvasTextItem. 
TextItem.Text = FText::Format(LOCTEXT("ExampleFText", "You currently have {0} health left."), CurrentHealth); 
// Draw the text to the screen with FCanvas::DrawItem. 
Canvas->DrawItem(TextItem, 10.0f, 10.0f);

 

=> FText 객체는 FText::Format 함수를 사용하여 생성할 수 있음.
 
위 예제 코드에서 CurrentHealth라는 변수를 사용하여 FText 객체를 생성하였는데, 해당 변수는 {0}의 위치에 들어감.
 
더 많은 변수를 텍스트에 추가하고 싶다면, {1}, {2} ~ 이런식으로 텍스트에 추가 가능.

 

 


 

 

 

*FString

 
=> FString 클래스는 FName  /  FText 와는 달리 조작이 가능한 유일한 스트링 클래스
 
* FString 생성하기

 

FString TestString = FString(TEXT("TestString"));

 

 

* FString 클래스의 비교 기능
 
- 두 FString 객체를 비교하는 방법
 
  • 오버로딩된 == 연산자 사용
  • FString 변수와 TCHAR* 배열 비교
  • FString::Equals() 함수 사용
FString::Equals() 함수 사용시에는 ESearchCase Enum 값을 파라미터로 넘겨 대소문자 비교 유무를 설정해야함.
대소문자를 구분하지 않으려면 ESearchCase::IgnoreCase,
대소문자를 구분하려면 ESearchCase::CaseSensitive.

 

 

bool bCompare1 = TestString.Equals(OtherString, ESearchCase::IgnoreCase); // 대소문자 구분하지 않음
bool bCompare2 = TestString.Equals(OtherString, ESearchCase::CaseSensitive); // 대소문자 구분

 

 

 

 

 

* FString 클래스의 검색 기능
 
  • FString::Contains() 함수 사용
ESearchCase Enum 값으로 '대소문자 비교 유무'  설정 가능,
ESearchDir Enum 값으로 '검색 방향' 지정 가능.

 

bool bCompare = TestString.Contains(OtherString, ESearchCase::CaseSensitive, ESearchDir::FromEnd);

 

 

  • FString::Find() 함수 사용
 
또 다른 옵션으로 '검색 시작 인덱스' 지정 가능.
 
int32 iCompare = TestString.Find(OtherString, ESearchCase::CaseSensitive, ESearchDir::FromStart, 10);

 

 

 

 

* FString 클래스의 이어 붙이기 기능

 

TestString += OtherString;
FString AnotherString = TestString + OtherString;

 

 


 

참고 자료

 

 

 

 

'Unreal Engine > 개념' 카테고리의 다른 글

[UE]@Hot Reload  (0) 2022.11.29