*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 |
---|