UE - World, Actor, Component
World, Actor, Component
언리얼의 GameScene과 Actor, Component
World : World와 Level
World는 게임의 전체적인 세계를 나타낸다.
World는 Level이라는 단위로 나뉘며, 하나의 Level은 다양한 Actor들로 구성된다. 예를 들어, 게임의 한 스테이지가 하나의 Level이 될 수 있다.
World과 Level은 기본적으로 게임의 공간과 레이아웃을 정의 하는 역할을 한다.
Actor : 게임 세상의 기본 단위
액터(Actor)는 World에 배치할 수 있는 기본 단위 객체 다.
게임 내에서 움직이거나 상호작용할 수 있는 모든 객체가 액터를 기반 으로 만들어진다.
액터는 Transform 정보를 가지고 있으며, 이는 World 내에서 물리적, 논리적 역할을 수행한다.
Component : Actor의 기능적 구성 요소
컴포넌트(Component)는 액터의 특정 기능이나 속성을 구현 하는 모듈화된 단위다.
액터에서 정의한 기능에 대한 세부적인 기능을 구현한 것이 컴포넌트이다.
컴포넌트의 특징
재사용성
- 컴포넌트는 다양한 액터에서 재사용할 수 있어, 중복 코드를 줄이고 개발 효율성을 높인다.
모듈화
- 개별 컴포넌트는 특정 역할에 집중하여 독립적으로 동작할 수 있다.
유연성
- 컴포넌트를 추가, 제거, 교체하여 액터의 동작과 특성을 손쉽게 변경할 수 있다.
즉, 액터는 기능과 동작을 정의 하고, 컴포넌트는 액터가 설정한 기능과 동작을 구현하고 구체화 하는 데 사용된다.
컴포넌트 종류
Scene Component
- transform 데이터를 제공하고, 다른 컴포넌트들의 부모 역할을 한다.
Static Mesh Component
- 3D 모델 데이터를 렌더링하는 데 사용된다.
Camera Component
- 카메라의 시점을 정의한다.
Audio Component
- 소리를 재생할 수 있다.
이해를 위해 예시를 들어본다.
새(Bird) Actor 설계
1. Bird Actor의 기본 동작 정의
먼저, Bird라는 Actor를 만들어보자.
Bird는 새가 할 수 있는 기본적인 동작인 Fly와 Swim을 정의한다.
2. 세부 동작 구현을 위한 컴포넌트
새의 다양한 특성을 나타내기 위해 다음과 같은 컴포넌트를 만듭니다:
CannotFly: 날 수 없는 새를 위한 컴포넌트 CanFly: 날 수 있는 새를 위한 컴포넌트 CannotSwim: 헤엄칠 수 없는 새를 위한 컴포넌트 CanSwim: 헤엄칠 수 있는 새를 위한 컴포넌트
3. 다양한 새 구현
이제 Bird Actor를 상속받아 각 새의 특성에 맞는 컴포넌트를 조합해보자
Chicken
- 날 수도, 수영할 수도 없음
- 컴포넌트: CannotFly, CannotSwim
Pigeon
- 날 수 있지만, 수영할 수 없음
- 컴포넌트: CanFly, CannotSwim
Duck
- 날 수도, 수영도 가능
- 컴포넌트: CanFly, CanSwim
4. 컴포넌트의 유연성
컴포넌트를 교체하는 것만으로 동작을 쉽게 변경할 수 있다는 장점이 있다.
예시 : Chicken이 날 수도 있고 수영할 수도 있게 하려면 CannotFly, CannotSwim 대신 CanFly, CanSwim 컴포넌트를 적용하기만 하면 된다.