본문 바로가기
유니티 공부/Unity

Unity - 싱글톤(Singleton), Manager

by 코딩하는 돼징 2023. 5. 11.
반응형

싱글톤(Singleton)

해당 클래스의 인스턴스가 오직 하나만 생성되고 전역 접근을 할 수 있다.

특징

01 유일성

단 한 개의 객체만 존재하고 이는 다른 객체들이 이 인스턴스에 접근할 수 있도록 한다.

02 전역적

Singleton은 어디서든 접근 할 수 있다. 게임 시스템상에서 전역 변수의 역할을 한다. 여러 스크립트나 클래스에서 동일한 객체를 참조해야하는 경우 사용된다.


매니저(Manager)

게임에서 공통적으로 사용되는 기능을 관리한다. 이는 Singleton패턴을 이용하여 구현되므로 전역에서 접근가능한 인스턴스를 갖는다.

사용 이유

01 관리

게임의 여러 기능을 관리하고 조정하여 게임을 원할하게 진행하도록 한다. 예를 들어 오디오 매니저는 오디오를 관리하고, 리소는 매너저는 게임에서 사용되는 리소소를 로드하고 관리한다.

02 전역 접근

매니저 클래스의 인스턴스가 오직 하나만 존재하므로 다른 객체들이 접근할 때 항상 동일한 인스턴스를 참조하게 된다. 이를 통해 데이터 및 기능을 공유하거나 게임의 여러 부분에서 동일한 리소스를 사용할 수 있다.

03 데이터 관리

매니저 클래스를 통해서 데이터를 중앙에서 관리할 수 있다. 이는 데이터 일관성과 관리의 용이성을 높일 수 있다.


Unity 코드 예시

public static Manager Instance { get; private set; }
private void Awake()
{
    if(Instance != null && Instance != this)
    {
        Destroy(this);
    }
    else
    {
        Instance = this;
    }
}

01 프로퍼티

Manager의 Instance를 반환하며 이 인스턴스는 전역적으로 유일하다.

02 if문

if문에서는 Instance가 null이 아니고 Instance가 현재 객체(this)와 같지 않은 경우에만 아래의 코드를 실행한다. 이미 인스턴스가 존재하면서 새로운 인스턴스를 생성하는 경우 새로 생성된 인스턴스를 파괴하여 유일한 인스턴스가 유지되도록 한다.

03 else문

else문에서는 Instance 변수가 null일때 현재 인스턴스를 이 변수에 할당한다.

반응형

'유니티 공부 > Unity' 카테고리의 다른 글

Unity - IPointer Interface(IPointerEnterHandler등)  (0) 2023.05.12
Unity - SetActive, activeSelf  (0) 2023.05.12
Unity - ScriptableObject  (0) 2023.05.10
Unity - Transform.LookAt()  (0) 2023.05.09
Unity - Quaternion.LookRotation()  (0) 2023.05.09

댓글