본문 바로가기

개발/언리얼

WorldSubsystem

별도의 배치 없이 자동으로 게임내에 생성되는 시스템.

 

주요 시스템 종류

EngineSubsystem - 엔진 시작/종료

EditorSubsystem - 에디터 시작/종료

GameInstanceSubsystem - 게임 시작 / 종료

WorldSubSystem - 레벨 시작 / 종료

LocalplayerSystem - 플레이어 접속/종료(멀티플레이어)

 

라이프사이클 핵심 함수

초기화(시작)

virtual void Initialize(FSubsystemCollectionBase& Collection) override;

초기화가 선행되어야 하는 서브시스템이 있다면 Collection 을 통해 우선 초기화를 관리할수있다.

예를들어, 날씨 시스템이 시간 시스템을 선행으로 한다면, 날씨시스템 초기화에서 시간 시스템의 초기화를 호출하도록 할 수 있다.

 

초기화 해제(종료)
virtual void Deinitialize() override;

 

서브시스템의 적용 여부를 결정하는 함수(특정 맵에서, 서버/로컬에서, 등)

virtual bool ShouldCreateSubsystem(UObject* Outer) const

Outer는 외부 객체로 이를통해 월드나 레벨을 불러와 이 서브시스템을 로드할것인지를 결정해 bool로 반환한다.

예시, 레벨이 StarterMap일때만 로드되는 시스템