본문으로 바로가기

[Unreal Engine 5] Singleton

category UnrealEngine/기능 2023. 10. 2. 20:41

이 글을 읽기전에 https://openmynotepad.tistory.com/114 를 읽고오면 더 좋다!

 

언리얼 엔진에서 제공하는 싱글톤 클래스는 다음과같다.

  • GameInstance
  • AssetManager
  • GameMode
  • GameState

우리가 단 하나만 존재하는 객체를 만들면서, 해당 객체에서 값을 어디서든 가져올 수 있도록 할 수 있기 위해 Singleton을 사용하는데, 사람마다 사용하는 방법이 다양하다.

 

대부분 GameInstance를 사용하여 Singleton 작업을 하는데, 이는 Contents의 처리를 위해서가 아닌 Application의 데이터 처리를 관리하는 용도로 사용하는 것이 좋다.

그렇다면 Contents를 위한 Singleton은 어떻게 처리해야 하는가?

 

이를 위해, 언리얼엔진은 Game Singleton Class를 제공한다.

이곳에 우리가 사용할 클래스를 지정해두면, 엔진이 초기화됨과 동시에 Init에서 초기화를 시작한다.

UEngine::InitializeObjectReferences() 에 있다.

 

우리는 지정해두고, 해당 GameSingleton을 가져와서 사용하면 된다.

일단 처음으로, 우리가 사용할 GameSingleton 클래스를 하나 생성하자.

 

그 다음 엔진의 Project Settings - General Settings - Default Classes - Advance 에서

Game Singleton Class에 우리가 만든 Singleton Class를 지정해주고, 에디터를 껐다 키면 된다.

 

그 후엔, 코드내에서 GEngine의 GameSingleton에 접근하여 사용할 수 있다.

 

기존의 Singleton pattern의 관례와 동일하게, Get함수를 만들어두고 사용하면 편하다.