UDN 링크
FString
FName, FText와 다르게 검색, 변환 및 비교가 가능한 문자열 클래스. 문자열 관련 여러 기능을 제공한다. 하지만 그렇기 때문에 FName, FText에 비해 더 많은 자원을 소모한다.
1. 생성
FString TestHUDString = FString(TEXT("This is my test FString."));
2. 변환
1) String 변수
[From FString]
에서 | 으로 | 예제 |
FString | FName | TestHUDName = FName(*TestHUDString); FString -> FName 은 손실성 변환이라 위험합니다. FName 은 대소문자를 구분하지 않기 때문입니다. |
FString | FText | TestHUDText = FText::FromString(TestHUDString); FString -> FText 은 가능한 경우도 있지만, FString 의 내용이 FText 의 "자동 현지화" 혜택을 받지 못할 수 있음에 유념해 주시기 바랍니다. |
[To FString]
에서 | 으로 | 예제 |
FName | FString | TestHUDString = TestHUDName.ToString(); |
FText | FString | TestHUDString = TestHUDText.ToString(); FText -> FString 은 안전하지 않습니다. 일부 언어에서는 변환시 손실될 위험이 있습니다. |
2) 숫자 및 기타 변수
[To FString]
다른 숫자 변환의 경우, FString::Printf() 함수에 적합한 인수를 곁들어 사용하면 됩니다.
변수 유형 | 스트링에서 변환 | 스트링 포맷 |
float | FString::SanitizeFloat(FloatVariable); | |
int | FString::FromInt(IntVariable); | |
bool | InBool ? TEXT("true") : TEXT("false"); | 'true' 거나 'false' 거나 |
FVector | VectorVariable.ToString(); | 'X= Y= Z=' |
FVector2D | Vector2DVariable.ToString(); | 'X= Y=' |
FRotator | RotatorVariable.ToString(); | 'P= Y= R=' |
FLinearColor | LinearColorVariable.ToString(); | '(R=,G=,B=,A=)' |
UObject | (InObj != NULL) ? InObj->GetName() : FString(TEXT("None")); | UObject 의 FName |
[From FString]
FString 에서 int 나 float 숫자 변수로의 변환은 물론, 부울 변수로의 변환도 존재합니다.
변수 유형 | 스트링에서 변환 | 참고 |
bool | TestHUDString.ToBool(); | |
int | FCString::Atoi(*TestHUDString); | |
float | FCString::Atof(*TestHUDString); |
3. 비교
TestHUDString.Equals(TEXT("Test"), ESearchCase::CaseSensitive);
4. 탐색
1) FString::Contains() 는 서브스트링을 찾은 경우 true 를, 아니면 false 를 반환합니다.
TestHUDString.Contains(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd);
2) FString::Find() 는 처음 찾은 서브스트링 인스턴스의 인덱스를 반환합니다.
TestHUDString.Find(TEXT("test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd, 10);
5. 조작
FString AShooterHUD::GetTimeString(float TimeSeconds)
{
// 분과 초만 관련이 있습니다.
const int32 TotalSeconds = FMath::Max(0, FMath::TruncToInt(TimeSeconds) % 3600);
const int32 NumMinutes = TotalSeconds / 60;
const int32 NumSeconds = TotalSeconds % 60;
const FString TimeDesc = FString::Printf(TEXT("%02d:%02d"), NumMinutes, NumSeconds);
return TimeDesc;
}
'게임 개발 > Unreal Engine' 카테고리의 다른 글
[Unreal Engine] 라이팅(Lighting) (24) | 2021.12.30 |
---|---|
[Unreal Engine] 액터의 수명주기(Actor Lifecycle) (30) | 2021.12.29 |
[Unreal Engine] FName, FText, FString 비교 (0) | 2021.12.29 |
[Unreal Engine] Actor, Pawn, Character 비교 (0) | 2021.12.28 |
[Unreal Engine] FVector API (0) | 2021.12.28 |