언리얼 엔진을 학습하다 보면, 가장 먼저 접하게 되는 개념 중 하나가 UObject와 AActor입니다. 둘 다 엔진에서 매우 중요한 클래스 계층을 이루고 있으므로, 차이점을 확실히 알아두면 좋습니다.
Actor와 Object
Actor와 Object 개념
Object (UObject)의 개념
- Object = 객체지향 프로그램에서의 객체
- UObject는 언리얼 엔진에서 모든 클래스의 최상위 부모 클래스입니다. (뿌리, 조상)
- 모든 클래스는 이 오브젝트 클래스를 상속받는다
- 스스로 월드(레벨)에 배치될 수 없습니다. 주로 데이터나 로직만 담당합니다.
- 예: 플레이어 능력치(HP, 경험치), AI 정보, 게임 설정 값, 임시 계산 로직 등
- 주로 화면에 보이지 않는 데이터나 로직을 처리합니다.
- 단 오브젝트는 실제 월드상에 배치가 안됨.
- 추상적인 개념이다.
Actor (AActor)의 개념
- Actor 또한 Object를 상속받는다
- AActor는 UObject를 상속한 클래스로, 월드에 배치(Spawn) 할 수 있습니다.
- 위치, 회전, 크기 등 공간적 정보를 가지고 있고, 여러 컴포넌트 (Component)를 추가로 붙일 수 있습니다. (컴포넌트 관련 내용은 다음 강의에서 배웁니다.)
- 실제 게임 세계에서 보이고 상호작용하는 캐릭터, 적 몬스터, 무기, 조명, 파티클 효과 등은 주로 AActor를 기반으로 제작합니다.
Actor 클래스 생성하기
- 액터 클래스를 만들겠다 = 액터를 상속받는 클래스를 만들겠다
- 언리얼 에디터 상단 메뉴에서 “Tools” → “New C++ Class”를 선택합니다.

- 팝업 창이 뜨면 Common Classes 탭에서 Actor를 선택한 뒤 Next 버튼을 누릅니다.

- 만약 Actor가 안 보인다면, “All Classes” 탭에서 직접 검색해 보세요.
- 클래스 이름은 Item으로 하고, Class Type (폴더 위치)은 기본값인 Public으로 둔 뒤 “Create Class”를 누릅니다.

Live Coding 이 실행되고, 다 컴파일되면 IDE 실행됩니다. (Visual Studio의 경우 Reload All 해줘야 합니다)
생성된 클래스 파일 확인
- IDE에서 Solution Explorer를 보면, Source/SpartaProject → Public 폴더 아래에 Item.h, Private 폴더 아래에 Item.cpp 파일이 생성된 것을 확인할 수 있습니다.
- 동시에 Public 폴더와 Private 폴더도 생성된 것을 확인할 수 있습니다.
- Class Type 옵션에 대한 추가 설명
- Public으로 생성할 경우:
- . h가 Public 폴더에,. cpp가 Private 폴더에 생깁니다.
- 프로젝트의 다른 모듈에서 쉽게 #include 할 수 있어 편리합니다.
- Private으로 생성할 경우:
- . h와. cpp 모두 Private 폴더에 저장됩니다.
- 해당 모듈에서만 접근 가능하게 되며 특정 로직이나 구현을 캡슐화해서 외부에 노출하고 싶지 않을 때 사용합니다.
- 프로젝트 규모가 커질수록 Public과 Private을 구분하여 사용하는 것이 좋습니다. 외부 모듈에서의 접근 허용 여부를 명확하게 관리하여 코드 구조를 유지할 수 있습니다.
- 그러나 학습 단계에서는 보통 Public 방식을 추천합니다.
- Public으로 생성할 경우:
- 언리얼 에디터 Content Browser의 C++ Classes → SpartaProject 폴더 아래에도 Item 클래스가 나타나면 정상입니다
- 동시에 Public 폴더와 Private 폴더도 생성된 것을 확인할 수 있습니다.
- Class Type 옵션에 대한 추가 설명
- Public으로 생성할 경우:
- . h가 Public 폴더에,. cpp가 Private 폴더에 생깁니다.
- 프로젝트의 다른 모듈에서 쉽게 #include 할 수 있어 편리합니다.
- Private으로 생성할 경우:
- . h와. cpp 모두 Private 폴더에 저장됩니다.
- 해당 모듈에서만 접근 가능하게 되며 특정 로직이나 구현을 캡슐화해서 외부에 노출하고 싶지 않을 때 사용합니다.
- 프로젝트 규모가 커질수록 Public과 Private을 구분하여 사용하는 것이 좋습니다. 외부 모듈에서의 접근 허용 여부를 명확하게 관리하여 코드 구조를 유지할 수 있습니다.
- 그러나 학습 단계에서는 보통 Public 방식을 추천합니다.
- Public으로 생성할 경우:
- 언리얼 에디터 Content Browser의 C++ Classes → SpartaProject 폴더 아래에도 Item 클래스가 나타나면 정상입니다.
주의할 점
Actor 생성 시 IDE에서 할 수는 있지만 세팅해야 할 것들이 좀 있기 때문에 특수한 상황 아니면 위에 했던 방식으로 생성하자
Actor 배치
- Item 클래스를 레벨 뷰포트로 드래그 & 드롭하여 배치합니다. (현재는 눈에 보이지 않음)
- Outliner 창에서는 확인할 수 있습니다.
Actor 클래스 삭제하기
Content Browser에서 바로 삭제 불가
- 우클릭 혹은 'Del' key 다 불가능합니다

IDE에서 클래스 제거
- 언리얼 에디터를 종료합니다.
- Visual Studio를 열어, Solution Explorer에서 삭제할 클래스를 찾습니다.
- . h와. cpp 파일을 각각 우클릭 → Remove를 선택합니다.
- 상단 메뉴에서 File → Save All로 저장합니다.
- 이 작업은 솔루션 (프로젝트 구성 정보)에서만 제거하는 것이므로, 실제 디스크의 파일은 아직 남아 있습니다.
프로젝트 폴더에서 물리적 파일 삭제
- 윈도 탐색기로 Source/ProjectName 아래의 Public 혹은 Private 폴더로 이동합니다.
- 방금 Remove 했던. h,. cpp 파일을 직접 삭제합니다.
- 그리고 IDE로 돌아가서 빌드를 한 후, 다시 언리얼 에디터를 실행하면, 해당 클래스가 Content Browser에서도 사라진 것을 확인할 수 있습니다.
- 만약 이 과정을 무시하고 언리얼 에디터에서만 Delete 하거나, 설루션에서 Remove 하지 않고 폴더에서만 파일을 삭제하면 빌드 에러 혹은 클래스 미삭제 같은 문제가 생길 수 있습니다.
- 항상 에디터 종료 → 솔루션 Remove → 물리 파일 삭제 → (IDE 빌드) → 에디터 재실행 순서를 지키면 안전합니다.
Conclustion
- 언리얼 엔진이라는 것은 항상 여러 가지 클래스들이 엔진 자체에서 준비가 되어 있는데, 우리는 그 각각의 클래스들을 상속받아서 클래스를 생성하게 되는 것이다.
추천
[페이지] Unreal Engine | 언리얼 엔진
언리얼 공식 문서를 참고
Actor: https://dev.epicgames.com/documentation/unreal-engine/actors-in-unreal-engine
Actors in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community
Actors and Objects, the basic gameplay elements in Unreal Engine
dev.epicgames.com
Objec: https://dev.epicgames.com/documentation/unreal-engine/objects-in-unreal-engine