Study/TIL(Today I Learned)

24.10.18 UE5

에린_1 2024. 10. 18. 23:33
728x90

UE5

FString

  • FName 이나 FText 와는 달리, FString 은 조작이 가능한 유일한 스트링 클래스이다. 대소문자 변환, 부분문자열 발췌, 역순 등 사용가능한 메서드는 많다.
  • FString 은 검색, 변경에 다른 스트링과의 비교도 가능하다. 그러나 바로 그것이 FString 이 다른 불변의 스트링 클래스보다 비싸지는 이유이다.

FString 만들기

  • 다음 구문으로 FString 을 선언할 수 있다.
FString TestHUDString = FString(TEXT("This is my test FString."));

숫자 및 기타 변수

변수 유형 스트링에서 변환 스트링 포맷

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
  • 다른 숫자 변환의 경우, FString::Printf() 함수에 적합한 인수를 곁들어 사용하면 된다.

From FString

  • FString 에서 int 나 float 숫자 변수로의 변환은 물론, 부울 변수로의 변환도 존재한다.

변수 유형 스트링에서 변환 참고

bool TestHUDString.ToBool();  
int FCString::Atoi(*TestHUDString);  
float FCString::Atof(*TestHUDString);  

비교

  • 오버로딩된 == 연산자를 사용해서 두 FString 을 비교하거나, 하나의 FString 과 TCHAR*s 배열을 비교할 수 있다.
  • FString::Equals() 메서드도 있는데, 검사 대상 FString 과, 비교시 대소문자를 무시할 것인지를 나타내는 ESearchCase Enum 을 받는다.
  • 대소문자 상관없는 비교를 하려는 경우 ESearchCase::IgnoreCase 를, 아닌 경우 ESearchCase::CaseSensitive 를 사용한다.
TestHUDString.Equals(TEXT("Test"), ESearchCase::CaseSensitive);

검색

  • FString 안에서 검색을 할 때는, 두 가지 검색 유형이 있다.
  • 첫째, FString::Contains() 는 서브스트링을 찾은 경우 true 를, 아니면 false 를 반환한다. FString::Contains() 의 검색 대상은 FString 거나 TCHAR* 의 서브스트링이다.
  • ESearchCase Enum 을 사용해서 검색시 대소문자를 무시할 것인지를 지정할 수 있다. 또한, ESearchDir Enum 을 사용해서는 검색 방향을 지정할 수 있다. 검색 기본값은 대소문자 무시이며, 처음서부터 시작한다.
  • TestHUDString.Contains(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd);
  • 둘째, FString::Find() 는 처음 찾은 서브스트링 인스턴스의 인덱스를 반환한다. FString::Find() 의 검색 대상은 FString 또는 TCHAR* 의 서브스트링이다. FString::Contains() 와 마찬가지로, 대소문자 구분 여부와 검색 방향을 지정할 수 있으며, 기본값은 대소문자 무시에 처음서부터 검색이다.
  • 또다른 옵션으로는, 스트링 안에서 검색을 시작할 인덱스를 지정할 수도 있다. FString::Find() 이 서브스트링을 찾지 못하는 경우, -1 을 반환한다.
  • TestHUDString.Find(TEXT("test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd, 10);

FString 조립하기

  • 서브스트링이나 다른 변수 유형으로부터 스트링을 조립하는 메서드는 두 가지 있다.
  • 첫째, 접합(concatenation)은 FString 만을 인수로 받는다. 다른 변수 유형은 FString 으로 변환을 해 줘야 접합시킬 수 있다.
  • 둘째, Printf 는 int 나 float 같은 숫자 입력을 받을 수 있으며, 스트링에 추가시킬 입력 형식을 설정할 수도 있다.

접합

  • 스트링 접합 연산자는 두 가지이다.

연산자 설명 사용법

+= 제공된 스트링을 FString 오브젝트에 덧붙입니다. StringResult += AddedString;
+ 새 FString 오브젝트를 만들어 제공된 스트링을 덧붙입니다.  

Printf

  • FString::Printf 로 조립된 FString 은 FString 에 저장 가능할 뿐만 아니라, UE_LOG 디버그 메시징 으로 화면에 출력시킬 수도 있다. 형식 인수는 지정자는 아래 예제에서 볼 수 있듯이 C++ printf 함수와 같다.
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;
	}

FString 조작하기

  • 스트링 조작을 위한 함수는 여러가지 있다.
  • 스트링 서브섹션 복사를 위한 함수는 Left, Right, Mid 가 있다. 지정된 서브섹션 위치를 기준으로 스트링을 둘로 분할시킬 수 있다. 그 작업은 Split 메서드를 통해 이루어진다. 스트링 분할을 위한 또다른 메서드는 ParseIntoArray 로, 스트링을 지정된 구분자마다 스트링 배열에 분할시킨다.
  • 대소문자 변환은 ToUpper, ToLower 를 통해 이루어지며, 각각 스트링을 대문자, 소문자로 변환시킨다.

뷰포트 출력

  • 디버그 메시지를 뷰포트 에 출력하려면 UEngine::AddOnScreenDebugMessage() 를 사용합니다. 이 함수는 다음의 네 파라미터를 (순서대로) 받는다.

파라미터 이름 파라미터 유형 설명

Key int 같은 메시지가 여러번 추가되지 않도록 하기 위한 고유 키입니다. 디버그 메시지를 트랜션트(휘발성으)로 만들려면 키 값을 -1 로 사용합니다.
TimeToDisplay float 메시지를 얼마나 오래 표시할 것인지, 초 단위입니다.
DisplayColor FColor 표시되는 텍스트의 색입니다.
DebugMessage FString 표시할 메시지 (FString) 입니다.

출력 로그 출력

  • UE_LOG 는 파라미터에 printf 마크업을 사용한다.
UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *TestHUDString);
  • LogClass 는 로그 카테고리이다. (OutputDevices.h 에 DECLARE_LOG_CATEGORY_EXTERN 으로 설정된) 기존 카테고리를 사용할 수도, DEFINE_LOG_CATEGORY_STATIC 을 사용해서 자체적으로 정의할 수도 있다.
  • Log 는 상세도이다. 상세도는 ELogVerbosity Enum 에 정의된다. 가능한 값은 Fatal, Error, Warning, Display, Log, Verbose, VeryVerbose 이다.
  • 다음 인수는 출력하고자 하는 텍스트로, 파라미터 마크업 포함이다.
728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

24.10.22 VV, UE5  (3) 2024.10.23
24.10.21 UE5  (0) 2024.10.22
24.10.17 CS, UE5  (3) 2024.10.18
24.10.14 게임 서버  (0) 2024.10.14
24.10.11 게임 서버  (0) 2024.10.11