이 글은 언리얼 엔진에서 싱글톤 패턴을 구현하는 방법에 대해 설명하고 있습니다.
오늘 프로젝트를 진행하는 중 인벤토리를 관리하는 매니저를 사용하기 위해 기존 C++ 싱글톤 패턴으로 작업을 진행하였다. 해당 방식을 사용하게 되니 메모리 관리에 문제가 생겨 프로그램이 자주 팅기게 되었다.
게임 인스턴스는 게임이 실행되고 종료될 때까지 유지되는 객체다. 맵을 바꾸어도 해당 정보들이 유지되기 때문에 인벤토리 매니저에 적용하면 위의 문제를 해결할 수 있을 것 같아 아래와 같이 코드를 수정하였다.
void UMyGameInstance::Init()
{
Super::Init();
InventoryManager = NewObject<UInventoryManager>();
...
}
그 결과 기존에 프로그램이 뻗는 현상이 해결되었다. 이 부분에 대해서는 언리얼 엔진의 오브젝트 처리 및 가비지 컬렉션에 대해 추가로 공부를 해야할 것 같다.