본문 바로가기
Unreal

[Unreal] Subsystem

by 카피마스터 2023. 1. 27.

UGameInstanceSubsystem

#include "Kismet/GameplayStatics.h"

...

if (UGameInstance* gameInstance = UGameplayStatics::GetGameInstance(this))
{
	if (UDebugInfoSubsystem* subsystem = gameInstance->GetSubsystem<UDebugInfoSubsystem>())
	{
		// 사용
	}
}

- UGameInstance와 동일한 생명주기로 자동으로 생성되고 파괴되어 따로 관리해 줄 필요가 없다.

- 싱글톤처럼 하나의 인스턴스가 필요한 경우나 필요한 기능별로 로직을 관리하기에 좋음.

static변수나 싱글톤을 사용하는 경우 에디터에서 여러개의 클라이언트 실행시

모두 하나의 객체를 바라보게 되어 정보가 오염될수 있기 때문에

UGameInstance의 멤버 변수로 선언해서 사용하거나, UGameInstanceSubsystem을 사용하는 것이 좋다.

 

공통 인터페이스

// 초기화
virtual void Initialize(FSubsystemCollectionBase& Collection) override;

// 해제
virtual void Deinitialize() override;

 

 

 

 

UEditorSubsystem

필요 모듈 : "EditorSubsystem"