Unreal Engine을 처음 배우다 보면, 마치 Unity의 GameManager.Instance처럼 어디서든 접근 가능한 글로벌 객체들이 있다는 걸 알게 됩니다.
대표적으로 GetWorld(), GetGameInstance() 같은 것들이 있죠.
이 글에서는 Unreal에서 초기부터 기본 제공되는 글로벌 객체와 함수들을 정리해보고, 마지막으로 Subsystem에 대해서도 정리해 보겠습니다.
글로벌 객체와 함수들
GetWorld
현재 이 객체가 속한 UWorld를 가져옵니다.
객체가 아무 World에 속하지 않는다면, nullptr를 return합니다.
Unity의 SceneManager.GetActiveScene() 과 비슷합니다.
GetGameInstance()
게임 전체를 통틀어 유지되는 글로벌 매니저 입니다.
Unity의 Singleton GameManager.Instance 와 비슷합니다.
Unity는 GameManager를 만들어야 하지만, Unreal에는 기본으로 제공됩니다.
GetController()
Player의 InputManager를 가져옵니다.
Unity의 GetComponent<PlayerInput()> 과 비슷합니다.
GetPlayerController()
특정 플레이어의 컨트롤러를 가져옵니다.
Unity의 PlayerInputManager.instance.GetPlayerController(playerIndex) 와 비슷합니다.
GEngine
전역 접근 가능한 시스템 객체입니다. Debug를 찍기 위해 주로 사용합니다.
실제 인스턴스가 살아있는지 확인하는 것이 좋습니다. (if (GEngine) {})
Unity의 Application 과 비슷합니다.
Subsystem이란?
Subsystem은 Unreal Engine에서 특정 범위에서 동작하는 글로벌 매니저 클래스입니다.
특정 기능을 모듈화해서 관리하기 위해 사용합니다.
- 특정 라이프사이클 동안 자동으로 생성되고 파괴됩니다.
- 언제든지 쉽게 접근할 수 있도록 설계되어 있습니다.
- Input 관리, 세션 관리, 데이터 저장 등 "프로젝트 전역 기능"을 깔끔하게 모듈화할 때 사용합니다.
기본 제공되는 Subsystem은 다음과 같습니다.
- UGameInstanceSubsystem: 게임 전체에서 살아있는 글로벌 서브시스템
- UWorldSubsystem: 월드(맵) 단위로 동작하는 서브시스템
- ULocalPlayerSubsystem: 특정 로컬 플레이어 단위로 동작하는 서브시스템
- UEngineSubsystem: 엔진 전체에서 살아있는 전역 서브시스템
Plugin이란?
Unreal Engine에서 Plugin(플러그인) 이란,
특정 기능을 독립적인 모듈로 분리해놓은 것입니다.
플러그인은 프로젝트나 엔진에 직접 코드를 추가하지 않고,
필요할 때 켜고 끌 수 있는 형태로 기능을 주입할 수 있습니다.
- 독립된 기능 단위로 관리할 수 있음.
- 코드, 리소스, 설정 파일 등을 묶어서 하나의 패키지로 만들 수 있음.
- 플러그인만 꺼도 관련 기능을 통째로 제거할 수 있음.
- 다른 프로젝트에도 쉽게 재활용할 수 있음.
Unity의 CineMachine같은 Package와 유사하다고 보면 됩니다.
Plugin 안에 Subsystem을 넣을 수도 있습니다.
예를 들어, MultiplayerSessionsPlugin이라는 플러그인 안에 UMultiplayerSessionsSubsystem을 넣어서
- 플러그인을 켜면 세션 기능이 활성화되고
- 플러그인을 끄면 세션 기능이 아예 프로젝트에서 사라지게
이렇게 설계할 수 있습니다.
'Unreal Engine' 카테고리의 다른 글
| [Unreal] 🎯 Unreal Engine 멀티플레이 기초 개념: Server, Multicast, Replication (0) | 2025.05.28 |
|---|---|
| [Unreal] Multiplayer Subsystem 구조의 이해 (0) | 2025.04.28 |
| [Unreal] Unreal에서의 Delegate 이해하기 (0) | 2025.04.26 |