티스토리 뷰

Unreal

Unreal C++ 기본타입과 문자열

cho22 2023. 11. 30. 20:48
반응형

왜 언리얼은 기본타입을 따로 지정하는가? 

플랫폼 파편화. 즉, 기기들마다 같은 C++  함수를 다르게 인식하는 이슈가 있었음. 그래서 그 이후에는 표준 규약을 만들어 문제를 해결하려했다. 

int형의 경우 32비트로 사용하는 플랫폼이 있고, 64비트로 사용하는 플랫이 있다. 게임의 경우 캐시 히트율이 매우 중요한데, 이렇게 플랫폼마다 데이터타입의 정의가 다르면 게임 개발에 문제를 일으킬수 있다. 즉, 애매모호한 데이터타입은 게임개발 성능을 저하시키고, 문제를 일으킬수 있다. 

언리얼은 int를 사용하지않고 int32를 사용한다.

 

bool 타입 : 크기가 명확하지 않기떄문에 헤더에서는 uint8을 사용하되, bitField를 사용하여 1비트로 사용한다. 접두사 b를 붙인다. 헤더가 아닌 cpp의 로직에서 사용할때는 자유롭게 bool을 사용한다. 


캐릭터 인코딩

언리얼은 TCHAR라는 별도의 타입을 지정하여 사용한다. 왜 언리얼은 문자열을 따로 지정하는가? 

컴퓨터가 영어권국가에 먼저 보급되었을때는 1바이트로 모든 문자를 표현할수 있었지만, 아시아권에 컴퓨터가 보급되면서 1바이트로 모든 문자를 표현할수가 없게 되었다. 그래서 Unicode표준이 나왔는데, 이전에도 컴퓨터는 사용되어왔고, 이미 유니코드로 되어있지 않은것들이 많았다. 그때는 각 국가별로  멀티바이트 문자체계를 사용하여문자를 표현하였다. 

즉, SingleByte문자열, MultiByte문자열, Unicode문자열 총 세개의 문자열이 존재하기때문에 이런 복잡한 상황을 해결하기 위해 TCHAR를 제공하고있고, 이 세개의 문자열을 신경쓰지 않고 코딩을 해도 되게 되었다. 

언리얼은 UTF-16을 사용한다. 관련된 설정파일이나, 로드할 문서들도 UTF-16을 사용한다. 소스코드는 UTF-8을 사용한다. UTF-8은 컴파일 오류를 일으킬수 있어서 가급적이면 쓰지 않는것이 좋다. 


언리얼이 제공하는 다양한 문자열 처리 

FName : 에셋 관리를 위해 사용되는 문자열 체계, 문자열을 사용하지만 내부적으로는 해시값을 사용하여 에셋을 빠르게 찾을수 있게 한다. 대소문자 구분이 없기 때문에 주의가 필요함. 한번선언되면 바꿀수 없어서 다시 FString으로 변환후 변경해야함

FText: 다국어 지원할때 사용하는 문자열체계

 

반응형

'Unreal' 카테고리의 다른 글

Unreal C++코딩표준  (1) 2023.11.11
Unreal - Smart Macro Indenting 설치  (0) 2023.11.11
Unreal - 언리얼 태그 UPROPERTY  (0) 2020.09.17
Unreal - 에임 오프셋 추가하기  (1) 2019.04.20
Unreal - 캐릭터 앉기, 일어나기 (Crouch)  (0) 2019.04.19
댓글