본문 바로가기

프로그래밍/언리얼

(6)
언리얼 빌드시스템 처음 언리얼 프로젝트를 생성하면 많은 폴더와 많은 용량을 차지하게 된다 Config, Content, Source를 제외한 모든 폴더와 .uproject 파일을 제외한 모든 파일을 제거하게 되면 폴더와 용량이 많이 줄어들게 된다 uproject 파일을 우클릭하고 Generate Visual Studio project files를 눌러본다 다이얼로그가 뜨면서 비주얼 스튜디오 관련 파일 및 폴더와 Intermediates 폴더가 자동으로 생성된다 .sln 파일을 열어보면 지웠던 솔루션 파일이 원상복구 되어 있음을 알 수 있다 삭제한 솔루션 파일이 복원이 되었는지, 이게 어떻게 가능한 일인지 알려면 언리얼 빌드 시스템에 대해 알아야 한다 UE4부터는 개발 환경이 맥(Mac)과 윈도우(Window) 두 가지 플..
언리얼 프로젝트를 만들면 생성되는 것들 처음 언리얼 프로젝트를 생성하면 다음과 같은 파일들이 생성된다. 1. Config : 게임 프로젝트의 설정 값을 보관하는 공간 제거하면 설정 정보가 날아가므로 항상 보관해야 한다 2. Content : 게임 프로젝트에 사용하는 Asset을 관리하는 공간 3. Intermediate : 프로젝트 관리에 필요한 임시 파일들을 저장하는 공간 제거해도 에디터에 의해 자동으로 재생성된다 4. Saved : 에디터 작업 중에 생성된 결과물을 저장하는 공간 C++ 프로젝트로 확장하게 되면 다음과 같은 파일들이 추가된다 1. Binaries : C++ 코드가 컴파일된 결과물을 저장하는 공간 삭제해도 빌드할 때마다 새롭게 생성된다 2. Source : C++ 소스 코드가 위치한 공간 C++ 소스 외에도 언리얼 엔진의 빌..
언리얼 스마트 포인터와 메모리 관리 스마트 포인터의 사용법은 일반 포인터와 거의 동일하다 일반 포인터는 객체에 접근가능한 주소를 보관하는 개념이라면 스마트 포인터는 객체의 소유권을 증명하는 개념이다 언리얼에서는 T로 시작하는 라이브러리로 제공한다 1. 유니크포인터(TUniquePtr) : 유일한 소유권을 보장한다. 공동 소유 불가 2. 공유포인터(TSharedPtr) : 공동 소유권을 주정할 수 있다 내부적으로 레퍼런스 카운팅기법을 사용한다 객체를 참조할 때마다 레퍼런스 카운트가 하나씩 올라가고, 해지하면 하나씩 내려간다 레퍼런스카운트가 0이되면 자동으로 해당 객체를 소멸시킨다 순환 참조(Circular Reference)가 발생할 수 있다 3. 약포인터(TWeakPtr) : 정보는 가지고 있지만, 소유권은 없는 형태이다 스마트 포인터 라..
UClass와 Reflection UClass : 언리얼 오브젝트의 타입 정보를 담고 있다 UClass 정보는 컴파일타임이든 런타임이든 원할 때 가져올 수 있다 컴파일 타임에서는 언리얼 오브젝트 선언에 있는 StaticClass를 사용하고 런타임에서는 언리얼 오브젝트 인스턴스에서 GetClass()함수를 사용해 가져올 수 있다 StaticClass 함수는 선언하지 않아도 언리얼 헤더툴에 의해 자동으로 생성된다 Reflection : 언리얼 오브젝트의 타입 정보를 검색하고 함수를 호출하거나 속성에 값을 설정한다 언리얼 오브젝트 클래스의 멤버 변수에는 UPROPERTY 매크로를 멤버 함수에는 UFUNCTION 매크로를 지정해주어야 한다 -> 언리얼 오브젝트 클래스에서 UPROPERTY와 UFUNCTION 매크로로 지정된 멤버 변수와 멤버함수..
클래스 기본 객체(CDO) 언리얼 엔진이 컴파일 전에 먼저 메타 소스 파일과 헤더 파일을 생성하는 목적은 여러가지가 있지만 기존의 C++ 문법에서 제공하지 못하는 런타임에서의 빠른 클래스 정보의 검색이다 이 메타 정보는 언리얼 엔진이 지정한 UClass라는 클래스를 통해 보관된다 UClass에는 언리얼 오브젝트에 대한 클래스 계층 구조 정보와 멤버 변수, 함수에 대한 정보를 모두 기록하고 있다 단순히 검색하는 것이 아니라, 런타임에서 특정 클래스를 검색해 형(Type)을 알아내 인스턴스의 멤버 변수 값을 변경하거나 특정 인스턴스의 멤버 함수를 호출하는 것이 가능하다 컴파일 단계에서 언리얼 오브젝트마다 UClass가 생성된다면 실행 초기의 런타임 과정에서는 언리얼 오브젝트마다 클래스 정보와 함께 언리얼 오브젝트의 인스턴스가 생성된다..
언리얼 오브젝트 언리얼 오브젝트 : 언리얼 엔진의 관리를 받는 특수한 객체. 언리얼 프로젝트에 모든 클래스가 언리얼 오브젝트가 되어야 한다는 것은 아님. 이 둘을 구별하기 위해 클래스 이름에 붙은 접두사를 사용한다 언리얼 오브젝트 : U로 시작 일반 C++ 클래스 : F로 시작 언리얼 엔진 내에서 객체를 쉽고, 효율적으로 관리하기 위해서 고안되었다 C++ 객체가 언리얼 오브젝트가 되면 자동으로 향상되는 기능 1. CDO(Class Default Object) : 객체의 초기 값을 자체적으로 관리한다 2. Reflection : 객체 정보를 런타임에서 실시간 조회가 가능하다 3. GC(Garbage Collection) : 참조되지 않는 객체를 메모리에서 자동 해제할 수 있다 4. Serialization : 객체와 속성..