패럿에서는 언리얼 엔진의 서브시스템을 사용합니다. 서브시스템은 엔진이 관리하는 수명을 제공하고 공통 기능에 대한 익스텐션 포인트를 추가합니다. Unity에서 싱글톤 패턴(Singleton Pattern)을 사용해 봤다면, 서브시스템이 그와 비슷한 기능을 제공한다고 보면 됩니다. 서브시스템은 엔진의 다음 범위에 직접 연결됩니다.
엔진(Engine)
에디터(Editor)
게임 인스턴스(Game Instance)
월드(World)
로컬 플레이어(Local Player)
이러한 범위가 다른 상태로 전환되면, 서브시스템도 그에 따라 반응할 수 있습니다.
일반적으로 서브시스템을 사용하는 때는 공통 C++ 함수 기능을 블루프린트에 노출해야 하고 예상 수명을 알고 있는 경우입니다.
오디오 서브시스템 예시
패럿에서는 다음과 같은 이유로 오디오 서브시스템을 사용합니다.
서브시스템은 게임 인스턴스 자체에 속해 있지 않고 게임 인스턴스의 수명에 연결되어 있습니다.
서브시스템은 C++ 및 블루프린트에서 액세스할 수 있습니다.
볼륨과 같은 사운드 세팅은 게임에서 언제 어디서든 변경할 수 있습니다.
서브시스템을 통해 오디오 세팅을 조정하면 중앙화된 디버깅 액세스 포인트가 제공됩니다.
외부 시스템에서 언제든지 오디오 세팅을 저장할 수 있습니다.
실제로 작동하는 모습을 보려면 UParrotAudioSubsystem을 살펴보세요. 오디오 서브시스템은 UI 시스템과 가장 많이 상호작용하는데, 플레이어가 UI 시스템에서 오디오를 조작할 수 있기 때문입니다. 그러나 오디오를 다른 곳에서 변경해야 하는 경우, 유연하게 사용할 수 있습니다. 게임에 시스템을 추가할 때마다 서브시스템이 유용한 추상화 방식이 될지 고려하세요.