Unity
싱글톤
방프
2021. 5. 26. 16:20
싱글톤(Singleton) : 단일체 패턴. 유일하게 하나의 인스턴스만 생성할 수 있게 한다.
1. MonoBehaviour를 상속받는(컴포넌트 기능을 하는/해당 씬에서만 귀속되는) 싱글톤
2. 컴포넌트 기능을 하지 않는 싱글톤 (프로젝트 전체에 귀속되는)
public class Singleton<T> where T: class, new()
{
private static T instance = null;
public Singleton()
{
}
public static T Instance
{
get
{
if (instance == null)
instance = new T();
return instance;
}
}
}
where : 제너릭 형식 제약 조건. 기본 클래스로 포함하거나 해당 기본 클래스임을 나타냄
-> class : 참조형식
-> new : 매개변수가 없는 생성자
∴ T는 class이어야 하고 new()이어야 한다 => 참조형식이어야 하고 매개변수가 없는 생성자여야 한다.
더보기
이전에 만든 싱글톤(MonoBehaviour을 상속받는)은 Awake함수에 종속적으로 작동되었다.
그러나 이번에 만든 싱글톤은 T라는 인스턴스 변수에 접근하는순간 새로 생성 후 반환하거나(new해서 반환) 바로 반환해주기 때문에 Awake함수에 종속적으로 작동되지 않는다. 프로젝트 전체에 귀속된다.
전역으로 사용하는 클래스는 이렇게 사용하면 편하다!
public class NewResourceManager : Singleton<NewResourceManager>
{
public void LoadMonster()
{
}
public void LoadChatacter()
{
}
}
이렇게 하면 프로젝트 내에서 유일한 클래스가 된다!
NewResourceManager.Instance.LoadChatacter();
으로 사용할 수 있다.