플랫폼 파편화 : C++의 함수가 특정 플랫폼에서 다르게 동작하는 문제

int 타입 크기를 지정하는 이유

메모리 정렬과 패딩을 고려할 때 타입 크기를 정확히 아는 것이 중요

통신할 때 타입 크기가 모호할 경우 안정적이지 못함

데이터 통신에서 바이너리 데이터를 주고 받을 때 uint8을 사용하는 것이 일반적

bool은 크기가 명확하지 않아 멤버 변수로 bool 대신 uint8로 선언하고 BitFieldOperator를 1bit로 선언해 데이터 양을 최소화

uint8 bIsBoolean:1;

 

TCHAR : Single Byte, MultiByte, Unicode 세 가지 타입에 신경쓸 필요 없이 처리해줌

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1

 

언리얼은 모두 UTF-16(한 문자당 2바이트) 포맷을 사용

일반적으로 소스 코드에 문자열을 그대로 쓰는 것을 추천하지 않음

소스 코드에 한글을 사용할 때는 UTF-8을 가급적 사용

 

FString

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1

 

TChar의 동적 배열(TArray)을 소유하는 클래스

*연산자를 사용하여 TChar 포인터를 반환

 

C 런타임 수준에서 문자열을 처리하는 함수(strstr 등)은 FString을 통해 처리

 

다른 타입에서 FString으로의 변환 함수

// 포맷 지정자를 통해 String 생성 가능
FString::Printf(TEXT("Score: %d"), Score);  // "Score: 100"

// 부동소수점을 문자열로 변환 (불필요한 0 제거)
FString::SanitizeFloat(3.14000);  // "3.14"

// 정수를 문자열로 변환 
FString::FromInt(42);  // "42"

 

다양하게 String을 조작하려면 FString을 사용

 

UE_LOG 매크로의 세 번째 파라미터에는 배열이기 때문에 %s로 배열을 전달

%s에 대응될 때는 TCHAR의 포인터를 전달해야 하는데, FString에 포인터 연산자 사용

FString LogCharString = LogCharArray;
UE_LOG(LogTemp, Log, TEXT("%S"), *LogCharString);

 

FName

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fname-in-unreal-engine?application_version=5.1

 

애셋 관리를 위해 사용되는 문자열 체계

에셋 키를 지정하는 용도로 사용되고 빌드시 해시값으로 변환하여 빠르게 찾을 수 있도록 함

대소문자 구분이 없고 한 번 선언되면 해시 키로 생성되기 때문에 변경하기 위해 FString으로 변환하면 데이터가 깨질 수 있음

 

언리얼에서 FName과 관련된 전역 Pool 자료구조를 갖고 있음

FName에서 문자열을 해시 값으로 변환하여 보관하고 전역 Pool에서 검색해 반환

 

FText

UI에서 다국어 지원을 위한 문자열 관리 체계

문자열 테이블 정보가 추가로 요구됨

게임 빌드시 자동으로 다양한 국가별 언어로 변환됨

 

TEXT 매크로

문자열 리터럴을 유니코드로 변환하여 플랫폼 간 호환성을 유지

FString과 FName에 멀티바이트 문자열(문자열 리터럴)로 설정할 경우 인코딩 방식에 의해 깨질 수 있으므로 TEXT 매크로 사용하는 것이 바람직

 

'언리얼 > 언리얼 C++ 및 개념' 카테고리의 다른 글

언리얼 개념 모음  (2) 2024.12.19
언리얼 C++ 코딩 규칙  (1) 2024.12.10
언리얼 엔진 게임 프레임워크  (1) 2024.09.03
언리얼 빌드 시스템  (0) 2024.07.24
언리얼 오브젝트 패키지  (0) 2024.07.23

+ Recent posts

목차