언리얼 엔진 컴포넌트
컴포넌트(Component)란 프로그래밍에 있어서 재사용이 가능한 독립적인 모듈을 의미한다.
하나의 집을 레고로 만든다고 할 때 완성된 하나의 집을 오브젝트라고 보면, 그 안에 차곡차곡 들어가 있는 레고 블럭들이 컴포넌트라고 볼 수 있다.
만들었던 집을 부수어 다시 만들 때 집이 모양이 바뀌거나 혹은 실내 공간의 배치가 달라지더라도, 필요한 모양의 블럭들은 다시 사용할 수 있도록 만들어둔 모듈(블록)을 컴포넌트에 비유할 수 있다.
소프트웨어를 개발할 때 독립적으로 개발되는 경우는 드물며, 독립적으로 개발되었다 하더라도 다른 모듈과의 호환성을 고려하지 않고 개발하면 결국 소프트웨어의 재사용성이 떨어지게 된다.
언리얼에서의 Component
언리얼에서의 Component는 액터(Actor)가 자기 자신에 서브 오브젝트로 어태치할 수 있는 특수한 타입의 오브젝트라고 표현한다.
즉, 액터의 완성도를 위해 붙이는 부가적인 오브젝트라고 볼 수 있다. 예를 들어, 컴포넌트는 탈것(vehicle)이 입력을 인식하고 속도 및 방향을 변경하는 방식과 같은 콘셉트를 표현할 수 있으며,
사용자가 컨트롤 가능한 자동차, 항공기, 배가 있는 경우, 탈것 액터가 사용하는 컴포넌트의 종류를 변경함으로써 탈것의 컨트롤 및 움직임의 차이를 구현할 수 있다.
액터 컴포넌트 (Actor Component)
언리얼의 UActorComponent
는 모든 컴포넌트의 베이스 클래스, 즉 상위 클래스이다.
메시(Mesh)와 이미지를 렌더링하고, 충돌체(Collision)을 구현하며, 오디오(Audio)를 재생할 수 있는 유일한 방법이기 때문에,
플레이어가 게임을 플레이할 때 월드에서 보거나 상호작용하는 모든 것은 궁극적으로 여러 타입의 컴포넌트 작업으로 이루어진다.
컴포넌트를 생성할 때 알아야 할 주요 클래스는 액터 컴포넌트(Actor Component),
씬 컴포넌트(Scene Component), 그리고 프리미티브 컴포넌트(Primitive Component) 정도가 있다.
Actor Component (클래스 UActorComponent)
움직임, 인벤토리, 속성 관리 및 기타 비물리적인 개념과 같은 추상적인 동작 대부분에 사용된다.
액터 컴포넌트는 트랜스폼(Transform)이 없으며, 이는 월드 내 물리적 위치 또는 회전에 영향을 받지 않는다는 것을 의미한다.
- 렌더링 없음:
- 씬 컴포넌트와 달리 위치, 회전, 스케일과 같은 3D 공간 정보(Transform)가 없다.
- 화면에 보이거나 물리적 상호작용을 하지 않음.
- 기능의 모듈화:
- 특정 기능을 액터에 추가할 수 있는 재사용 가능한 로직으로 설계된다.
- 게임플레이, AI, 사용자 입력 처리 등과 관련된 논리를 쉽게 분리하고 관리할 수 있다.
- 액터와의 관계:
- 액터의 서브 오브젝트로 존재하며, 액터가 삭제되면 해당 컴포넌트도 삭제된다.
- 유연성:
- 액터 컴포넌트는 게임플레이와 관련된 로직을 캡슐화하는 데 주로 사용되며, 다양한 액터에서 재사용 가능하다.
Scene Component (클래스 USceneComponent, UActorComponent의 자손)
지오메트리가 필요하지 않은 위치 기반 동작을 지원한다.
스프링 암(Spring Arm)과 카메라(Camera), 물리적 힘, 컨스트레인트(Constraint), 오디오까지 포함된다.
- 지오메트리 없음:
- 씬 컴포넌트는 3D 공간에서 위치, 회전, 스케일과 같은 변환(Transform) 정보를 제공한다.
- 용도:
- 부모-자식 계층 구조 관리.
- 공간적 데이터를 제공(예: 카메라 위치, 방향).
- 단독으로 보이거나 물리적으로 반응하지 않음.
- 예:
- Scene Root, Attach Point.
Primitive Component (클래스 UPrimitiveComponent, USceneComponent의 자손)
지오메트리가 있는 씬 컴포넌트로, 비주얼 요소 렌더링이나 물리적 오브젝트와의 충돌 또는 오버랩에 사용된다.
박스, 캡슐, 구체 콜리전 볼륨이나 스태틱 메시(Static Mesh), 스켈레탈 메시(Skeletal Mesh), 스프라이트(Sprite), 빌보드(Billboard),
파티클 시스템도 포함된다.
- 지오메트리 포함:
- 실제로 화면에 렌더링할 수 있는 모양(Shape)을 가지고 있다.
- 추가 기능:
- 렌더링 가능.
- 물리적 충돌 및 상호작용 가능.
- 예:
- Static Mesh Component, Skeletal Mesh Component, Box Component.
'Unreal > Core Concepts' 카테고리의 다른 글
Reflection System (0) | 2025.02.08 |
---|---|
Interface (0) | 2025.02.07 |
Actor Lifecycle (0) | 2025.02.04 |
LEVEL (0) | 2025.01.24 |
Actor (0) | 2025.01.15 |