Component

2025. 1. 15. 21:00·Unreal/Core Concepts

 

CBD(Component Based Developing)​

재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여 개발 생산성, 품질을 높이고 시스템의 유지보수 비용을 최소화 할 수 있다. 부품 역할을 하는 컴포넌트를 각 기능별로 개발하고 각자에게 필요한 것들을 선택하여 조립함으로 코드 재사용성과 각각 기능이나 구현들에 대해서 컴포넌트라는 모듈을 사용하기에 개발에 드는 시간을 절약하는 개발 방식입니다. 

언리얼 엔진 컴포넌트

컴포넌트(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
'Unreal/Core Concepts' 카테고리의 다른 글
  • Interface
  • Actor Lifecycle
  • LEVEL
  • Actor
Mr.Vulpes
Mr.Vulpes
여우비가 내리는 시간입니다.
  • Mr.Vulpes
    여우비 개발실
    Mr.Vulpes
  • 전체
    오늘
    어제
    • Browse All Categories (82)
      • Project (5)
        • Unreal (5)
        • DirectX (0)
      • Unreal (17)
        • Core Concepts (12)
        • Unreal For C++ (5)
      • C++ Programming (8)
        • C Basic (8)
      • DirectX (15)
        • Basic (11)
        • DirectX - Class (4)
      • Math & Physics (9)
        • Vectors (3)
      • Software Engineering (27)
        • Software Development Princi.. (24)
        • Design Pattern (3)
  • hELLO· Designed By정상우.v4.10.3
Mr.Vulpes
Component
상단으로

티스토리툴바