본문으로 건너뛰기

안동민 개발노트

본문 시작

블루프린트 컴포넌트의 사용법

Scene·Primitive·Actor 컴포넌트의 역할과 계층 관계를 익혀 액터의 외형과 기능을 조립하는 법을 배웁니다.

1절에서 액터가 게임 월드에 배치될 수 있는 모든 오브젝트의 기본 단위이며, 다양한 기능을 담는 컨테이너 역할을 한다고 설명드렸습니다.

그렇다면 액터가 담는 다양한 기능은 정확히 무엇일까요?

바로 컴포넌트(Component)입니다.

컴포넌트는 액터에게 특정 기능을 부여하는 모듈화된 블록이며, 언리얼 엔진의 객체 지향 설계의 핵심적인 부분입니다.

컴포넌트를 이해하는 것은 마치 레고 블록으로 무언가를 만드는 것과 같습니다.

큰 레고 판(액터) 위에 바퀴 블록(이동 기능), 창문 블록(시각적 표현), 엔진 블록(작동 로직) 등을 자유롭게 조립하여 원하는 형태와 기능을 가진 완성품을 만드는 것이죠.

컴포넌트: 액터에 기능을 조립하는 블록

액터는 컨테이너이고, 컴포넌트는 외형, 충돌, 이동, 소리 같은 독립 기능을 부착한다.

  1. Actor

    월드 객체이자 컴포넌트 컨테이너

  2. Component slots

    Scene 위치, 회전, 크기와 부모-자식 계층의 기준이 된다. Visual Static Mesh, Skeletal Mesh처럼 보이는 요소를 담당한다. Collision 겹침과 충돌 이벤트를 감지한다. Movement 발사체, 캐릭터 이동 같은 동작 로직을 제공한다.

  3. Scene

    위치, 회전, 크기와 부모-자식 계층의 기준이 된다.

  4. Visual

    Static Mesh, Skeletal Mesh처럼 보이는 요소를 담당한다.

  5. Collision

    겹침과 충돌 이벤트를 감지한다.

  6. Movement

    발사체, 캐릭터 이동 같은 동작 로직을 제공한다.


블루프린트 컴포넌트란 무엇인가?

컴포넌트는 특정 종류의 기능을 캡슐화한 재사용 가능한 블록입니다.

액터는 하나 이상의 컴포넌트를 가질 수 있으며, 이 컴포넌트들을 조합하여 액터의 행동과 외형을 정의합니다.

컴포넌트 덕분에 개발자는 복잡한 기능을 처음부터 다시 만들 필요 없이, 필요한 컴포넌트를 액터에 부착하는 것만으로 해당 기능을 쉽게 추가할 수 있습니다.

예를 들어, 게임 내의 모든 캐릭터가 이동 기능을 가져야 한다면, 모든 캐릭터 액터에 Character Movement Component를 추가하기만 하면 됩니다.

만약 어떤 캐릭터는 추가적으로 총격 기능이 필요하다면 Gun Component를 더 추가할 수 있겠죠.

이처럼 컴포넌트는 기능을 독립적으로 관리하고 재사용할 수 있게 하여 개발 효율성을 크게 높여줍니다.


주요 컴포넌트 유형

언리얼 엔진은 매우 다양한 종류의 빌트인 컴포넌트를 제공하며, 필요에 따라 직접 커스텀 컴포넌트를 만들 수도 있습니다.

몇 가지 주요 컴포넌트 유형은 다음과 같습니다.

씬 컴포넌트 (Scene Component)
  • 3차원 공간상의 위치, 회전, 크기 정보를 가지는 모든 컴포넌트의 기본입니다. 씬 컴포넌트는 다른 씬 컴포넌트의 부모가 될 수 있어 계층 구조를 형성할 수 있습니다.
  • 예시: Scene Component (가장 기본적인 공간 정보), Camera Component (카메라 시점), Light Component (광원), Audio Component (소리), Particle System Component (파티클 효과).
시각적 컴포넌트 (Visual Components)
  • 게임 월드에 시각적으로 표현되는 요소를 담당합니다.
  • 예시: Static Mesh Component (고정된 3D 모델), Skeletal Mesh Component (애니메이션 가능한 캐릭터 모델), Sprite Component (2D 스프라이트).
콜리전 컴포넌트 (Collision Components)
  • 다른 오브젝트와의 물리적 상호작용(충돌, 겹침 등)을 감지하는 역할을 합니다.
  • 예시: Box Collision, Sphere Collision, Capsule Collision (다양한 형태의 충돌 감지 영역).
이동 컴포넌트 (Movement Components)
  • 액터의 움직임을 제어하는 로직을 제공합니다.
  • 예시: Projectile Movement Component (발사체 움직임), Character Movement Component (플레이어 캐릭터 움직임).

이 외에도 Widget Component (UI), Niagara Component (고급 파티클), Post Process Component (화면 효과) 등 수많은 컴포넌트들이 존재하며, 각각 특정 기능에 특화되어 있습니다.


블루프린트 컴포넌트 사용법

액터 블루프린트에서 컴포넌트를 추가하고 사용하는 과정은 매우 직관적입니다.

컴포넌트 추가하기
  • 액터 블루프린트 에디터를 엽니다. (예: 1절에서 만든 BP_WelcomeMessage를 열어봅시다.)
  • 좌측 상단의 컴포넌트 패널(Components Panel)로 이동합니다.
  • 패널 상단의 + 추가(+ Add) 버튼을 클릭합니다.
  • 팝업되는 목록에서 원하는 컴포넌트 유형을 검색하여 선택합니다. 예를 들어, Static Mesh를 검색하여 Static Mesh Component를 추가해봅시다.
  • 새로 추가된 컴포넌트는 액터의 루트 컴포넌트(Root Component)Default Scene Root 아래에 계층적으로 추가됩니다. (드래그하여 다른 컴포넌트의 자식으로 만들 수도 있습니다.)
컴포넌트 속성 설정하기
  • 컴포넌트 패널에서 새로 추가한 Static Mesh Component를 선택합니다.
  • 우측의 디테일 패널(Details Panel)로 이동합니다.
  • Static Mesh 섹션에서 Static Mesh 항목 옆의 드롭다운을 클릭하거나 검색 아이콘을 눌러 원하는 3D 모델(Static Mesh Asset)을 선택합니다. (예: Shape_Cube를 검색하여 선택합니다.)
  • 뷰포트 패널에서 추가한 큐브가 보이는 것을 확인할 수 있습니다. 디테일 패널에서 위치(Location), 회전(Rotation), 크기(Scale) 등의 Transform 값을 조절하여 큐브의 외형을 변경해볼 수 있습니다.
컴포넌트 이벤트 활용하기
  • 많은 컴포넌트는 자신과 관련된 이벤트를 발생시킵니다. 예를 들어, 콜리전 컴포넌트는 다른 오브젝트와 겹쳤을 때 이벤트를 발생시킵니다.
  • 컴포넌트 패널에서 Box Collision (또는 여러분이 추가한 다른 콜리전 컴포넌트)을 선택합니다.
  • 디테일 패널을 아래로 스크롤하여 Events 섹션을 찾습니다.
  • 여기서 OnComponentBeginOverlap 이벤트 옆의 + 버튼을 클릭합니다.
  • 이벤트 그래프에 Event OnComponentBeginOverlap 노드가 생성됩니다. 이제 이 노드의 실행 핀 뒤에 Print String 노드를 연결하여 충돌 발생!이라는 메시지를 출력하도록 만들어볼 수 있습니다.
  • 블루프린트를 컴파일하고 월드에 배치한 후, 플레이어 캐릭터가 큐브와 겹치면 메시지가 출력되는 것을 확인할 수 있습니다.

실제로는 컴포넌트 패널에서 구조를 조립하고, 디테일 패널에서 값을 맞춘 다음, 이벤트 그래프에서 필요한 반응을 연결하는 순서로 작업하면 흐름을 잡기 쉽습니다.

조립하고, 설정하고, 이벤트 연결

액터 블루프린트에서 컴포넌트 사용은 구조 구성, 속성 조정, 그래프 연결의 순서로 이해하면 쉽다.

  1. 1
    Components Panel

    Actor Root 위치와 회전의 기준 Scene 자식 컴포넌트의 기준점 Visual Static Mesh, Skeletal Mesh Collision Overlap, Hit 판정 Movement 이동 규칙과 속도

  2. 2
    컴포넌트 추가

    Add 버튼으로 필요한 기능 블록을 고르고 Root 아래에 배치한다.

  3. 3
    Details 설정

    Mesh, Collision Preset, 속도, Transform 값을 목적에 맞게 조정한다.

  4. 4
    Event Graph 연결

    BeginOverlap 같은 컴포넌트 이벤트에 Print String이나 함수 호출을 잇는다.


컴포넌트의 계층 구조

컴포넌트는 Root를 기준으로 위치와 기능을 계층화한다

자식 컴포넌트는 부모의 위치와 회전을 따라가므로, 무엇을 Root로 둘지가 배치 안정성을 결정한다.

  1. Root / Scene

    Transform 기준점

  2. Static Mesh

    보이는 모델

  3. Collision

    겹침, 막힘, 클릭 판정

  4. Audio / Niagara

    효과음과 이펙트

구분설명
부모-자식자식은 부모 Transform을 따라 움직인다.
역할 분리Mesh는 표시, Collision은 판정, Audio는 피드백을 맡긴다.
검수루트 변경이 모든 자식 위치에 영향을 주는지 확인한다.

컴포넌트 패널에서 볼 수 있듯이, 컴포넌트들은 부모-자식(Parent-Child) 관계를 가질 수 있습니다.

자식 컴포넌트는 부모 컴포넌트에 종속되어 부모의 위치, 회전, 크기 변화에 함께 영향을 받습니다.

  • Default Scene Root는 액터의 가장 기본적인 씬 컴포넌트이자 모든 컴포넌트의 기본 부모입니다.
  • 컴포넌트 패널에서 특정 컴포넌트를 다른 컴포넌트 위로 드래그하여 자식으로 만들 수 있습니다. 예를 들어, Point Light ComponentStatic Mesh Component의 자식으로 만들면, 3D 모델이 움직일 때 빛도 함께 움직이게 됩니다.

이러한 계층 구조는 복잡한 오브젝트를 구성할 때 매우 유용합니다.

예를 들어, 자동차 액터는 바퀴, 문, 헤드라이트 등의 컴포넌트들을 가질 수 있으며, 각 컴포넌트는 자동차 본체(루트)의 자식이 되어 자동차가 움직일 때 함께 움직이게 됩니다.

컴포넌트 시스템은 언리얼 엔진이 지향하는 객체 지향적이고 모듈화된 개발의 핵심입니다.

기능을 컴포넌트 단위로 분리하고 조합함으로써, 개발자는 더욱 유연하고 효율적으로 게임 오브젝트를 설계하고 확장할 수 있습니다.

컴포넌트 부착 검수 기준

컴포넌트를 추가하는 것보다 중요한 것은 어느 부모를 따라갈지, 어떤 기본값으로 시작할지, 어떤 이벤트를 발생시킬지 확인하는 것입니다.

  1. 기능에 맞는 컴포넌트 선택

    Add 보이는 것은 Mesh, 감지는 Collision, 움직임은 Movement로 나눕니다.

  2. 따라갈 부모를 정하기

    Attach 메시를 따라갈 감지 영역인지, 루트 기준의 독립 영역인지 결정합니다.

  3. Details에서 초기값 맞춤

    Tune Transform, Static Mesh, Collision Preset, 속도를 의도와 맞춥니다.

  4. 필요한 반응만 연결

    Event Overlap이나 Hit 이벤트가 중복으로 실행되지 않는지 그래프에서 확인합니다.

  5. 부모가 맞지 않음

    자식 컴포넌트가 예상과 다르게 움직이면 Attach 관계부터 봅니다.

  6. 프리셋이 넓음

    BlockAll 대신 필요한 채널만 반응하도록 콜리전을 좁힙니다.

  7. 이벤트가 중복됨

    여러 컴포넌트가 같은 Overlap을 보내면 실행 경로를 분리합니다.


이번 절에서는 블루프린트 컴포넌트의 개념, 주요 유형, 그리고 액터 블루프린트 내에서의 사용법에 대해 자세히 알아보았습니다.

컴포넌트는 앞으로 여러분이 만들 거의 모든 액터의 중요한 구성 요소가 될 것입니다.

블루프린트 컴포넌트 조립 기준표

컴포넌트는 목록을 늘리는 기능이 아니라 액터의 책임을 나누는 블록입니다. 루트, 표시, 충돌, 이동, 이벤트를 구분해 조립합니다.

  1. Default Scene Root 공간 기준점
  2. Static Mesh 보이

    형태

  3. Box Collision 상호작용 감지
  4. Audio Component 반응 출력

컴포넌트를 어떤 기준으로 조립할지 보여주는 기준표를 추가합니다.

컴포넌트는 표시, 감지, 기능 책임을 나누어 붙인다

목록을 많이 붙이는 것보다 Root 아래에서 각 컴포넌트가 맡는 책임이 겹치지 않는지가 중요하다.

질문판정
위치 기준이 필요한가?Scene 또는 Collision을 Root로 두고 자식 이동을 예측한다.
보이는 외형인가?Static Mesh나 Skeletal Mesh로 표시 책임을 둔다.
겹침/클릭/막힘을 감지하나?Box, Sphere, Capsule Collision으로 판정 책임을 분리한다.
여러 액터에 반복되는 기능인가?커스텀 Actor Component로 빼는 것을 검토한다.
신호해석
좋은 조립Mesh와 Collision이 같은 역할을 하지 않고 서로 보완한다.
문제 신호루트가 바뀌자 자식 위치가 예상과 다르게 움직인다.

컴포넌트를 붙일 때는 목록만 늘리지 않고 루트와 자식의 계층, 각 컴포넌트의 표시와 기능 책임을 함께 확인합니다.

컴포넌트 계층은 부모 Transform과 역할 분리를 함께 보여준다

컴포넌트는 붙이는 순서보다 루트 기준, 시각 책임, 충돌 책임의 분리가 중요하다.

  1. 계층 기준

    Root 액터 위치와 회전의 기준점이다. Child 부모 Transform을 따라 움직인다. Attach 부모를 바꾸면 이동 기준도 바뀐다.

  2. 역할 기준

    Visual Mesh, Sprite, Widget처럼 보이는 결과를 맡는다. Collision Overlap, Hit, Click 같은 감지 책임을 맡는다. Behavior Movement, Audio, Niagara처럼 기능을 맡는다.

검수의미
핵심컴포넌트 목록이 아니라 계층 변화가 결과에 미치는 영향을 읽는다.
검수부모를 움직였을 때 따라가야 할 자식만 따라가는지 확인한다.