언리얼 C++ 자료형
오브젝트 타입: 스태틱 메시 컴포넌트의 포인터,...
프리미티브 타입: uint8, int32, float,...
프리미티브 타입 재정의의 필요성
C++의 기반인 C언어는 임베디드 전용 언어로
최소한의 메모리로도 동작할 수 있게끔 개발되었다
그래서 자료형의 크기가 중요하고
C언어는 자료형의 크기를 컴파일러의 자율로 맡긴다
그에 따라 컴파일러를 만들 때 자료형을 원하는 비트로 지정하는 경우도 가능하다
언리얼 프리미티브 타입 재정의
이처럼 C++ 표준에서도 32bit 플랫폼이냐, 64bit 플랫폼이냐에 따라 자료형 크기가 다르다
이러한 플랫폼 파편화가 되는 게임 개발에서는 유지 보수에 좋지 않다
그에 따라 언리얼은 프리미티브 타입을 재정의해서 크기를 지정했다
ex.
int32: 32비트 정수형
int64: 64비트 정수형
float: 단정도 부동 소수점 숫자를 나타내는 32비트 부동 소수점 형식
double: 배정도 부동 소수점 숫자를 나타내는 64비트 부동 소수점 형식
bool: 불리언 값을 나타내는 자료형으로, true 또는 false
uint8: 8비트 부호 없는 정수형
uint16: 16비트 부호 없는 정수형
uint32: 32비트 부호 없는 정수형
uint64: 지원하지 않기에 int32나 uint32를 사용하면 된다
(주의) bool 타입의 선언
C/C++에는 bool 자료형에 대한 표준이 없고
그 크기가 명확하지 않다
만약 해당 bool 속성이 Serialization이나 Replication과 관련이 있어
UPROPERTY()를 작성해야 한다면,
uint8 자료형 + bit field 연산자를 사용해서 1bit짜리 자료형을 만들어 사용해야 한다
그게 아닌 경우에는 그냥 bool 자료형을 쓰면 된다
즉, 상황을 구분하지 않고편하게 사용하기 위해서는
bool을 사용하지 말고 uint8과 bit 크기를 제한해 작성을 하자
UPROPERTY(VisibleAnywhere)
uint8 IsDead : 1;
FVector
위치 혹은 크기를 의미하는 3개의 프리미티브 타입을
묶어서 하나의 구조체로 정의했다
FVector에는 연산자도 재정의되어 있어서
스칼라 곱, 내적, 외적 등 쉽게 이용 가능하다
FRotator
회전에는 FRotator 구조체를 사용한다
차례대로 Pitch, Yaw, Roll이라는 3개의 회전 값을 가진다
Pitch: 좌우를 기준으로 한 회전 값, 언리얼 엔진 기준 Y축 회전 표현
Yaw: 상하를 기준으로 한 회전 값, 언리얼 엔진 기준 Z축 회전 표현
Roll: 전후를 기준으로 한 회전 값, 언리얼 엔진 기준 X축 회전 표현
FTransform
월드에 존재하는 모든 액터는 트랜스폼 정보를 필수적으로 가진다
이때 쓰이는 자료형이 FTransform으로
크기(FVector), 회전(FRotator), 위치(FVector) 정보가 포함된다
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 Actor - 언리얼 에셋 지정 (0) | 2024.05.11 |
---|---|
언리얼 Actor - UPROPERTY()의 Specifier (0) | 2024.05.11 |
언리얼 Actor - Actor 클래스 생성 및 내부 구조 (0) | 2024.05.11 |
언리얼 기본 요소 - World (0) | 2024.05.11 |
언리얼 기본 요소 - Actor (0) | 2024.05.11 |