언리얼 C++ 프로그래밍

[언리얼 C++] 언리얼 프로젝트(애셋, 레벨, 액터)

언린이 2021. 8. 2. 23:22

언리얼 프로젝트의 모든 것은 프로젝트 디렉터리에 들어있습니다. 프로젝트는 원하는 갯수만큼 만들 수 있지만, 각각은 그 자체로 완결성을 가집니다. 언리얼 엔진의 프로젝트 브라우저를 사용하여 새 프로젝트를 생성하면 디렉터리 구조나 언리얼 에디터에서 열어볼 수 있는 언리얼 프로젝트 파일([ProjectName].uproject) 등의 필수 프로젝트 프레임워크가 구성됩니다.

 

 

1. 애셋

애셋은 프로젝트의 Content 폴더에 들어있으며, .uasset 파일로 저장됩니다.

애셋에는 머티리얼, 스태틱/스켈레탈 메시, 블루프린트, 사운드 큐, 텍스처 등이 포함되며, 이들은 프로젝트의 오브젝트에서 불러올 수 있는 템플릿입니다.

 

 

2. 레벨

레벨 또한 프로젝트의 Content 폴더에 들어있으며, .umap 파일로 저장됩니다.

언리얼 에디터 안에서는 한번에 하나의 레벨 작업을 할 수 있으며, 그 레벨이 뷰포트에 표시됩니다.

 

뷰포트에 표시된 레벨은 랜드스케이프 편집 모드와 폴리지 편집 모드 등을 활성화하여 꾸밀 수 있습니다.

랜드스케이프 편집 모드로는 지형지물의 외형을 자유자재로 디자인할 수 있고, 폴리지 편집 모드로는 나무, 풀, 바위 등을 레벨에 손쉽게 배치할 수 있습니다.

 

 

3. 액터

가장 본질적인 수준에서, 액터는 하나 이상의 컴포넌트로 구성되는 게임플레이 개체로 레벨에 배치하거나 게임플레이 도중 스폰시킬 수 있으며, 멀티플레이 게임에서는 네트워크 리플리케이션을 지원합니다.

모든 액터는 AActor 클래스에서 확장되는데, 이는 스폰 가능한 게임플레이 오브젝트의 베이스 클래스입니다.

 

그리고 액터는 어떤 면에서 컴포넌트라 불리는 특수 유형 오브젝트를 담는 그릇입니다.

예를 들어 CameraActor에는 CameraComponent가 들어있습니다.

 

시야와 같은 카메라의 기능은 모두 CameraComponent에 들어있습니다. 즉, CameraComponent는 Character 같은 다른 액터에 포함되어 해당 오브젝트에도 똑같은 카메라 기능을 줄 수 있다는 뜻입니다.

 

이런식으로 여러가지 유형의 컴포넌트를 사용하여 액터의 이동 방식, 렌더링 방식, 그 외 여러가지 기능 부분을 제어할 수 있습니다. 모든 오브젝트는 컴포넌트를 포함해서, UObject 클래스에서 확장되며, 이는 모든 게임플레이 오브젝트의 베이스 클래스입니다. UObject 클래스에서 확장된 게임플레이 오브젝트는 월드에 직접 인스턴싱할 수는 없으며, 액터에 속해야 가능합니다.

 

각 액터나 오브젝트는 어느 한 클래스의 인스턴스입니다. 클래스는 액터나 오브젝트에 대한 템플릿을 구성합니다. 해당 액터나 오브젝트에 대해 설정 가능한 변수를, 그리고 해당 액터나 오브젝트 안에서 실행 가능한 함수를 정의합니다.

새 클래스 또는 새 오브젝트나 액터 유형을 C++ 코드로 만들 수 있습니다. 블루프린트 클래스는 주로 새 액터를 구성하는 클래스를 만드는데 사용되나, 약간의 오브젝트를 확장시킬 수도 있기는 합니다. C++ 클래스를 새로 만든 다음 그 C++ 클래스에서 블루프린트 클래스를 파생시키는 방법으로 그 둘을 합칠 수도 있습니다.