본문으로 건너뛰기

안동민 개발노트

본문 시작

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

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

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

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

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

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

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

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


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

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

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

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

예를 들어, Character 클래스는 캐릭터 이동을 위한 Character Movement Component를 기본으로 갖습니다. 이 컴포넌트는 ACharacter와 함께 사용하도록 설계되어 있으므로 임의의 액터에 추가하기만 하면 같은 동작이 완성되는 것은 아닙니다.

만약 어떤 캐릭터는 추가적으로 총격 기능이 필요하다면 직접 작성한 Gun Component를 더 추가할 수 있겠죠. 이 이름은 커스텀 컴포넌트의 예시입니다.

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


주요 컴포넌트 유형

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

Actor Component는 공간 변환 없이 기능을 담는 기본형입니다. 그 하위인 Scene Component는 공간 변환과 부착 계층을 제공하고, 다시 그 하위인 Primitive 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를 추가해봅시다.
  • 빈 Actor 블루프린트에 추가한 Static Mesh는 보통 루트 씬 컴포넌트인 DefaultSceneRoot 아래에 나타납니다. 씬 컴포넌트끼리는 드래그하여 부착 부모를 바꿀 수 있습니다.
컴포넌트 속성 설정하기
  • 컴포넌트 패널에서 새로 추가한 Static Mesh Component를 선택합니다.
  • 우측의 디테일 패널(Details Panel)로 이동합니다.
  • Static Mesh 섹션에서 Static Mesh 항목 옆의 드롭다운을 클릭하거나 검색 아이콘을 눌러 원하는 3D 모델(Static Mesh Asset)을 선택합니다. (예: Starter Content가 있다면 Shape_Cube, 없다면 프로젝트에서 사용할 수 있는 큐브 메시를 선택합니다.)
  • 뷰포트 패널에서 추가한 큐브가 보이는 것을 확인할 수 있습니다. 디테일 패널에서 위치(Location), 회전(Rotation), 크기(Scale) 등의 Transform 값을 조절하여 큐브의 외형을 변경해볼 수 있습니다.
컴포넌트 이벤트 활용하기
  • 많은 컴포넌트는 자신과 관련된 이벤트를 발생시킵니다. 예를 들어, 콜리전 컴포넌트는 다른 오브젝트와 겹쳤을 때 이벤트를 발생시킵니다.
  • + Add에서 Box Collision을 추가하고 큐브 주변을 감싸도록 Box Extent를 조절한 뒤 선택합니다. 플레이어가 겹칠 수 있도록 쿼리 충돌과 대상 채널의 Overlap 응답을 설정하고, 상호작용하는 양쪽 컴포넌트의 Generate Overlap Events를 켭니다.
  • 디테일 패널을 아래로 스크롤하여 Events 섹션을 찾습니다.
  • 여기서 OnComponentBeginOverlap 이벤트 옆의 + 버튼을 클릭합니다.
  • 이벤트 그래프에 Event OnComponentBeginOverlap 노드가 생성됩니다. 이제 이 노드의 실행 핀 뒤에 Print String 노드를 연결하여 충돌 발생!이라는 메시지를 출력하도록 만들어볼 수 있습니다.
  • 블루프린트를 컴파일하고 월드에 배치한 후, 플레이어 캐릭터가 Box Collision 영역과 겹치면 메시지가 출력되는 것을 확인할 수 있습니다.

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


컴포넌트의 계층 구조

씬 컴포넌트의 부착 관계

씬 컴포넌트의 부착 관계

같은 액터 안의 씬 컴포넌트 부착 예시DefaultSceneRoot 아래 Static Mesh를, 메시 아래 Point Light를 부착한 관계입니다. 화살표는 부모에서 자식 방향입니다.DefaultSceneRootStatic MeshPoint Light
같은 액터 안의 씬 컴포넌트 부착 예시DefaultSceneRoot 아래 Static Mesh를, 메시 아래 Point Light를 부착한 관계입니다. 화살표는 부모에서 자식 방향입니다.DefaultSceneRootStatic MeshPoint Light

화살표는 씬 부착 부모 → 자식입니다. 공간 변환이 없는 일반 Actor Component의 소유 관계를 나타내는 그림은 아닙니다.

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

씬 컴포넌트의 상대 변환을 사용하면 부모의 위치, 회전, 크기 변화가 자식에 반영됩니다. 절대 변환 옵션이나 물리 시뮬레이션을 적용한 경우에는 설정에 따라 달라집니다.

  • DefaultSceneRoot는 빈 액터의 루트 자리표시자이며 다른 씬 컴포넌트로 교체할 수 있습니다. 공간 변환이 없는 일반 Actor Component는 씬 부착 계층의 자식이 아닙니다.
  • 컴포넌트 패널에서 특정 컴포넌트를 다른 컴포넌트 위로 드래그하여 자식으로 만들 수 있습니다. 예를 들어, Point Light Component를 Static Mesh Component의 자식으로 만들면, 3D 모델이 움직일 때 빛도 함께 움직이게 됩니다.

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

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

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

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


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

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