Unity/프레임워크 / / 2025. 12. 4. 00:43

[Unity] 관리자 클래스 : Singleton Pattern

반응형

유니티 게임 제작을 위해 몇가지 필요한 기능들을 세팅하고 시작한다.

 

먼저 각종 Manager 클래스인데, 매니저 클래스는 게임이 시작해서 종료될 때까지 프로그램의 생명주기를 함께해야 한다.

즉, 로비에서 플레이 화면으로 전환된다고 해서 파괴되어서는 안될 중요한 클래스들이다.

 

대표적으로 입력 매니저, 오디오 매니저, 리소스 매니저 같은 녀석들이 해당된다.

 

이러한 객체들을 내가 직접 만들어서 관리하기 위해 Singleton 패턴을 사용해 프로그램에서 "유일한" 객체임을 보장해주는 방식을 사용한다.

 

싱글톤 패턴의 핵심은

1. 정적(static) 객체 : 프로그램의 생명주기를 따라가고 전역에서 접근하기 위해

2. this가 null이면 생성해서 반환하고, null이 아닌(이미 존재하는) 상태라면 나 자신(this) 을 반환한다.

 

 

멤버 변수로 instance를 생성하고, 쉽게 인스턴스를 가져갈 수 있도록 Instance를 구현한다.

 

 

Awake 함수를 통해 유니티 엔진에 편승하여, 엔진에서 인스턴스 생성 즉시 Init 함수를 호출시키고

여기서 싱글톤 패턴을 사용해 유일성을 보장한다.

 

하지만, 싱글톤 패턴을 사용한다고 해서 프로그램 생명주기가 보장되는 것이 아니므로, 엔진에 요청하여 게임 씬이 전환되더라도 해당 싱글톤 객체를 정리 대상으로 삼지 말아달라고 Don't Destroy On Load 를 요청한다. 다만 이 기능을 선택사항으로 설정한다.

해당 씬에서만 "유일성"을 보장받아야 하는 객체도 싱글톤으로 만들어야 하니까.

 

만약 이미 생성이 되었는데, 또 Init 함수가 호출된다면 이는 삭제요청으로 받아들이고 파괴한다.

 

 

삭제 시, instance 멤버를 null로 만들어주어 안전하게 처리한다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유