액터(Actor)
다른 게임 엔진인 유니티가 게임오브젝트(GameObject) 기반이라면, 언리얼은 액터(Actor) 기반이다.
타일, 돌, 나무, 캐릭터, 화살 등, 게임 월드 상에 존재하는 모든 것들은 액터인것.
액터(Actor)가 게임오브젝트(유니티 GameObject)와 다른 점은 그 자체가 C++클래스라는 점
유니티에서 마우스 우클릭을 통해 게임 오브젝트를 생성하면, 그 안에 프로그래밍 코드가 담겨있지 않은 채로 그냥 월드에 존재한다. 그 안에 캐릭터 모습과, 프로그래밍 코드 등 필요한 것들을 넣어주면 되는것.
언리얼에서는 컨텐츠 브라우저창 우클릭을 통해 블루 프린트를 생성하면, 그 자체가 C++ 클래스이며(액터 클래스) 그래서 이는 프로그래밍 코드이다. 그 블루 프린트를 화면으로(레벨뷰) 드래그해야 그제서야 오브젝트가 생성된다.
언리얼은 코드 기반인 것.
오브젝트 트리
Content Browser 여백 우클릭 -> Blueprint Class를 선택하면 아래와 같은 화면이 나온다

이미지의 설명처럼 액터, 폰, 캐릭터는 상속 관계에 있다. 폰과 캐릭터는 액터이며, 캐릭터는 폰이다
객체지향 프로그래밍 개념에 따라 후자는 전자의 특성과 기능을 포괄해서 함께 가지고 있는 것.
- 액터(Actor) : 타일 나무 돌 등 움직이 못하는 정적인 물체이거나, 형상이나 모습 자체가 없는 상태로 월드 상에 존재할 수 있다.
- 폰(Pawn) : 액터의 차일드, 사용자의 입력을 받을 수 있다.
- 캐릭터(Character) : 폰의 차일드, 사람이나 동물 등 뼈가 심어져있는 3D모델(Rigging)을 이용해 애니메이션을 구동하기 편하게 되어있다, 걷기 점프하기 등의 동작을 위한 프로그래밍적 배경이 이미구현되어있거나 구현하기 편하게 되어있다.
무엇을 쓰든 자유
만약 우리가 만들려는 히어로가 캐릭터 블루프린트(Character Blueprint)에서 제공하는 점프 기능을 사용할 생각이 없다고 가정해보자
폰 클래스(Pawn Class)에서 필요한 것들을 덧붙여서 캐릭터 클래스(Character Class)처럼 만들어 쓰면 된다.
CharacterMovement라는 걸 직접 구현해야 하겠지만 캐릭터 클래스에 담겨있는 모든 것들을 구현하면 된다.
물론 액터에서도 가능하다. 개발 시간이 조금(어쩌면 조금 많이) 길어질 뿐.
우리는 적당한 블루프린트 클래스를 적당히 골라서 적당히 확장하면 된다.