오브젝트

ㄴ UObject를 상속받는 클래스

ㄴ UObject에는 가비지 컬렉션, UProperty, 로딩 및 저장 직렬화 기능이 구현되어 있음

 

클래스

ㄴ C++나 블루프린트로 생성될 수 있다.

ㄴ 특정 액터나 오브젝트의 행동과 프로퍼티를 정의한다.

 

블루프린트 클래스

콘텐트 제작자가 기존의 클래스 위에 다른 함수성을 쉽게 (비주얼 스크립팅) 추가할 수 있도록 해주는 애셋

 

게임플레이 클래스

각 게임플레이 클래스 소스 파일 위에는, 클래스에 대해 (자동 생성되는) 제너레이티드 헤더 파일을 포함시켜 줘야 한다.

ㄴ A 접두사 : 스폰 가능한 오브젝트(액터)의 서브클래스들에 붙음

ㄴ U 접두사 : 월드에 직접 인스턴싱 될 수 없는 오브젝트, 보통 액터에 포함되는 컴포넌트를 의미함

ㄴ 클래스 헤더 : 각 게임플레이 클래스 소스 파일 위에는, 클래스에 대해 (자동 생성되는) 제너레이티드 헤더 파일을 포함시켜 줘야 한다.

#include "ClassName.generated.h"

 

ㄴ 클래스 선언 : UCLASS 매크로를 사용하여 엔진 및 에디터 전용 속성을 전달한다.

클래스 지정자나 메타데이터 지정자가 전달된다.

UCLASS([specifier, specifier, ...], [meta(key=value, key=value, ...)])
class ClassName : public ParentName
{
    GENERATED_BODY()
}

 

에디터에서 C++ Classes 폴더에서 C++ 클래스를 추가할 수 있고, 여기서 부모 클래스를 지정하면서 만들 수 있다. 접두사는 에디터가 부모 클래스 종류를 보고 알아서 붙여준다.

자동으로 만들어지는 헤더 파일에는 UCLASS와 GENERATED_BODY 매크로가 자동으로 포함되어 있다.

헤더에서는 새로 추가할 프로퍼티들 윗줄에 UPROPERTY 매크로를 추가해줘야 한다.

 

클래스를 설계할 때 C++ 전용 / 블루프린트 전용 / 혼합형 으로 만들 수 있다.

C++ 전용으로 만든 클래스를 블루프린트 클래스가 상속받도록 하면 블루프린트로 확장할 수 있지만 해당 클래스에서 생성한 함수, 변수, 컴포넌트는 블루프린트에 접근할 수 없다. 다음과 같은 지정자가 있어야 한다.

ㄴ 이벤트 함수에는 UFUCTION 매크로와 BlueprintNativeEvent 지정자

ㄴ 프로퍼티에는 UPROPERTY 매크로와 BlueprintReadOnly 혹은 BlueprintReadWrite 지정자

ㄴ UCLASS 매크로에는 Blueprintable 지정자

 

C++ 클래스를 상속받는 블루프린트 클래스를 생성하면, 블루프린트 관리 창에서 상속한 클래스에서 만든 프로퍼티, 함수들이 보인다. 이벤트 그래프나 Construction Script를 활용하여 기존 함수의 기능들을 오버라이딩 할 수 있다.

 

액터

ㄴ 액터 인스턴스는 SpawnActor로 생성한다.

ㄴ 레벨에 배치할 수 있는 모든 오브젝트 (유니티의 게임오브젝트 역할)

ㄴ 액터 자체에는 트랜스폼 정보가 없지만 루트 컴포넌트로 씬 컴포넌트를 가진다면 액터가 트랜스폼 정보를 활용할 수 있다.

ㄴ 가비지 컬렉팅 대상이 아니므로 Destroy를 사용하여 명시적으로 소멸시켜줘야 한다.

 

컴포넌트

ㄴ 액터에 서브 오브젝트로 붙을 수 있는 특수한 타입의 오브젝트

일반적인 서브 오브젝트의 기본 작동방식과는 상반되게, 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성됩니다. 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다

 

핵심 컴포넌트 3가지

UActorComponent  : 액터 컴포넌트

ㄴ 기능만 가지고 있는 컴포넌트, 모든 컴포넌트의 베이스 클래스

USceneComponent : 씬 컴포넌트

ㄴ 트랜스폼 정보가 있는 컴포넌트(계층 구조를 이룰 수 있는), 액터 컴포넌트의 자식 클래스

UPrimitiveComponent : 프리미티브 컴포넌트

ㄴ 씬 컴포넌트의 자식 클래스, 그래픽적 표현을 갖는 컴포넌트 (메시, 콜리전, 빌보드, 파티클 시스템 등)

컴포넌트가 매 틱마다 업데이트 되려면 액터 컴포넌트가 등록되어 있어야 한다. 액터가 스폰될 때 해당 액터의 서브 오브젝트로 생성되는 컴포넌트는 자동으로 등록되지만 게임 중간에 생성되는 컴포넌트는 수동 등록해줘야 한다. RegisterComponent 함수를 사용한다.

 

ㄴ 액터의 서브클래스

ㄴ 주로 플레이어나 NPC로 사용됨

ㄴ 폰의 서브클래스로 DefaultPawn이나 SpectatorPawn을 사용할 수도 있다.

 

캐릭터

ㄴ 폰의 서브클래스

 

플레이어 컨트롤러

ㄴ 주로 플레이어를 나타내는 캐릭터나 폰을 Possess(빙의)한다.

플레이어의 입력을 게임 안의 상호작용으로 변환

멀티플레이어 게임의 주요한 네트워크 상호작용 지점

 

AI 컨트롤러

ㄴ 사용자는 플레이어 컨트롤러를 사용하여 폰을 제어하고 AI 플레이어는 AI 컨트롤러를 사용하여 폰을 제어한다.

 

플레이어 스테이트

게임 참여자의 스테이트를 말한다.

ㄴ 멀티플레이어 게임의 경우 모든 컴퓨터에 모든 플레이어의 플레이어 스테이트가 존재한다.

 

게임 모드

ㄴ 플레이 중인 게임의 규칙을 설정한다.

ㄴ 멀티플레이어 게임의 경우 게임 모드는 서버에만 존재한다.

ㄴ 하나의 레벨에는 하나의 게임 모드만 존재할 수 있다.

 

게임 스테이트

게임 내의 모든 클라이언트에 복제할 정보가 들어 있는 컨테이너 (서버가 모든 클라이언트에 전달해야 할 정보)

멀티플레이어 게임의 경우 게임 스테이트에 대한 로컬 인스턴스가 각 플레이어의 컴퓨터에 하나씩 있고, 로컬 게임 스테이트 인스턴스는 서버의 게임 스테이트 인스턴스에서 업데이트된 정보를 가져온다.

 

브러시

ㄴ 큐브, 구체와 같은 3D shape을 묘사하는 액터

ㄴ Gemoetry Mode에서 진행

레벨 및 오브젝트의 초기 프로덕션 단계에서 프로토타입을 빠르게 제작하는 데 유용하지만 레벨 디자인의 최종 방식으로는 권장되지 않는다.

 

볼륨

ㄴ 연결된 효과에 따라 용도가 달라지는 바운드된 3D 공간

ㄴ 투명벽, 트리거를 만들 수 있다.

 

레벨과 월드

ㄴ 레벨은 작은 단위의 게임플레이 영역이고 월드는 레벨들의 컨테이너

ㄴ 각 레벨은 .umap 파일로 저장됨

ㄴ 월드 세팅의 일반적인 세팅 그룹에는 게임 모드와 탐색에 영향을 주는 등의 세팅이 있다. 기타 좀 더 특수한 세팅은 게임의 라이팅, 오디오, 피직스 등을 환경설정하는 데 사용된다.

'언리얼 5 > 정리' 카테고리의 다른 글

애셋과 레퍼런스  (0) 2022.10.14
기초 지식 - 에디터 종류  (0) 2022.10.14
라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14

+ Recent posts