Unreal Engine에서 서브시스템(Subsystem)은 특정 기능을 관리하고, 전역적으로 접근 가능한 서비스나 매니저 클래스를 제공하는 객체입니다. 서브시스템은 게임의 다양한 부분을 모듈화하고, 특정 기능을 분리하여 관리할 수 있도록 합니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.
서브시스템의 종류
- UEngineSubsystem
- UGameInstanceSubsystem
- UWorldSubsystem
- ULocalPlayerSubsystem
1. UEngineSubsystem
- 역할: 엔진 레벨에서 동작하며, 게임 전체에 걸쳐 지속적으로 동작하는 전역적인 기능을 관리합니다.
- 특징:
- 엔진이 시작될 때 생성되고 종료될 때 파괴됩니다.
- 모든 레벨과 게임 인스턴스에서 공유됩니다.
- 엔진의 전반적인 상태와 기능을 관리합니다.
- 사용 예시: 전역 로깅 시스템, 전역 성과 매니저, 분석 매니저 등.
2. UGameInstanceSubsystem
- 역할: 특정 게임 인스턴스에 속하며, 개별 게임 세션이나 플레이어 세션과 관련된 기능을 관리합니다.
- 특징:
- 게임 인스턴스가 생성될 때 함께 생성되고, 게임 인스턴스가 종료될 때 함께 파괴됩니다.
- 특정 게임 인스턴스에 속하므로, 각 게임 인스턴스마다 별도의 서브시스템 인스턴스를 가질 수 있습니다.
- 게임의 상태나 데이터를 관리합니다.
- 사용 예시: 플레이어 데이터 관리, 세션 관리, 특정 게임 모드에 관련된 기능 등.
3. UWorldSubsystem
- 역할: 특정 월드(World)에서 동작하며, 월드 수준의 기능을 관리합니다.
- 특징:
- 특정 월드가 로드될 때 생성되고, 월드가 언로드될 때 파괴됩니다.
- 월드와 관련된 상태나 기능을 관리합니다.
- 사용 예시: 월드 내의 AI 관리, 월드 이벤트 관리 등.