Programing/Unity(C#)

[Coding] 싱글톤 패턴 구현 방법(2가지)

hye3193 2024. 1. 3. 22:26
int instanceCount = FindObjectsOfType(GetType()).Length;
if (instanceCount > 1)
{
    gameObject.SetActive(false);
    Destroy(gameObject);
}
else
{
    DontDestroyOnLoad(gameObject);
}

1. 해당하는 오브젝트들의 길이를 재서 판단하는 방법

 

static AudioPlayer instance;

if (instance != null)
{
    gameObject.SetActive(false);
    Destroy(gameObject);
}
else
{
    instance = this;
    DontDestroyOnLoad(gameObject);
}

2. static 변수를 통한 싱글톤 패턴 구현

static으로 선언하면 모든 인스턴스들이 같은 값을 공유하게 되므로,

가장 처음에 오는 인스턴스는 null 상태이기 때문에 else 문으로 들어가 instance 값을 지정받지만

그 후의 인스턴스들은 null이 아닌 상태이기 때문에 destory되는 것

 

 

싱글톤을 구현할 객체의 스크립트 파일 내에 위와 같이 작성하면 되고, if~else 문은 Awake() 내에 작성하면 된다