요즈음 언리얼5 C++ 프로젝트를 하면서 가장 많이 접하고 있는 클래스가 GameInstanceSubSystem인데 주로 매니저 클래스들을 설계할 때 이를 상속받아 클래스를 구현하고 있다
그래서 싱글톤 느낌의 역할을 하는 정도로 대강 알고 있는데 언리얼을 계속 개발할 것이라면 이런 프레임워크에서 제공하는 것들을 확실하게 알고 가야 할 것 같아 포스트 해보려한다
서브 시스템은 언리얼 엔진에서 수명을 관리하는 자동 인스터싱 클래스이다. 즉, 프로그래머가 직접 인스턴스를 생성하고 관리하지 않아도 엔진이 알아서 생성하고 소멸을 관리한다
서브 시스템은 다음과 같이 나뉜다
UEngineSubSystemUEditorSubSystemUGameInstanceSubSystemULocalPlayerSubSystem서브 시스템을 사용하는 이유
서브 시스템의 구조
FSubsystemCollectionBase를 상속받는다FSubSystemCollection 컨테이너에서 관리되며 SubsystemClass는 TMap에 저장된다서브 시스템의 생명주기
ShouldCreateSubsystem()에서 결정된다엔진 서브 시스템은 엔진 초기화 시 서브 시스템도 초기화되고 엔진 종료 시 정리된다. 엔진뿐만 아니라 인게임에서도 살아있음
그래서 프로젝트에서 다른 클래스들의 초기화에서도 참조가 가능했음
에디터 시작 시 초기화된다. 툴이나 커스텀 에디터를 만들 때 사용할 수 있을 것 같다. 인게임에서는 접근 불가
인게임 시작 시, 종료 시 초기화되고 정리된다. 그래서 가장 많이 사용하는 클래스
ULocalPlayer의 라이프 타임과 동일하다
해당 월드가 존재하는 동안에만 유지