🛠 언리얼 엔진/기초 3

언리얼 오브젝트(UObject)의 이해

언리얼 오브젝트언리얼에선 기존의 C++ 오브젝트와 언리얼 오브젝트를 모두 사용하지만,언리얼의 핵심은 ‘언리얼 오브젝트’라는 독특한 객체 규약이다. UObject 클래스를 상속하여 만들어진 모든 오브젝트가 언리얼 오브젝트이다.C++ 오브젝트는 저수준의 빠른 처리를 위해서, 언리얼 오브젝트는 콘텐츠 제작과 관련된 복잡한 설계와 구현에 사용된다고 생각하자.언리얼 코딩 컨벤션에 따르면 기존 C++ 오브젝트와 언리얼 오브젝트를 구분하기 위해 전자에는 F, 후자에는 U 접두어를 붙인다. 언리얼 오브젝트의 특징 다음과 같은 언리얼 엔진이 제공하는 기능들은 대부분 언리얼 오브젝트에 대해서 동작한다. (모두 그런 것은 아니다)클래스 기본 객체(CDO)를 생성하고 에디터에서 편집하기.리플렉션을 통해 에디터에서 오브젝트를 ..

언리얼 타입

언리얼 타입언리얼은 몇몇 케이스에서 자신들이 직접 만든 타입을 C++ 기본 타입 대신 사용할 것을 권고 또는 요구한다. 더 명확한 크기의 타입을 쓰거나 언리얼 리플렉션 및 Garbage Collector 시스템 등과 연동하기 위함이다.게임에선 성능이 가장 중요하기 때문에, 조금이라도 캐시 히트율을 높이기 위해 구조체 정렬의 최적화에 많은 공을 들여야 한다. booleanbool 타입은 시스템에 따라 크기가 달라 문제가 생길 수 있다. (표준 자체가 없다.)언리얼에서 직렬화 대상이 되는 boolean 데이터멤버를 선언할 땐, 다음과 같이 명시적으로 1바이트 변수를 선언하고 Bit Field 오퍼레이터로 1비트만 사용한다고 지정할 것을 권장한다. 접두어로는 b를 붙인다.uint8 bMyFlag : 1;이론적..

Assertion, Logging

Assertion언리얼에서 정의한 Assertion 용 매크로는 크게 (1) check, (2) verify, (3) ensure 세 가지가 있다. 또 이것들이 활용하는 형태에 따라 조금 변형된 버전으로 존재한다.check()C++의 assert 매크로에 대응된다. 디버그 빌드에서 조건이 false면 에러를 던져 에디터를 꺼버린다. 릴리즈 빌드에선 컴파일러에 의해 제거된다. (보다 구체적으로는, 디버그 빌드에서만 켜지는 DO_CHECK 플래그가 있어야지만 동작한다.)verify()기본 동작은 check와 같으나, DO_CHECK 플래그가 꺼져있어도(즉, 릴리즈 빌드에서도) 제거되지 않고 검사는 한다. 다만 반환값을 무시하므로 오류를 뱉지는 않는다.ensure()치명적이지 않은 오류에 사용하여, 조건이 f..