Unity에서 싱글톤 생성방법
반응형

C#에서 개발하면서 싱글톤패턴은 정말 흔히 사용하는 디자인패턴이다.

 

생성에 대해 생각하지않아도 되고. null에 대해 체크하지않아도 되고 상당히 편하다

 

편한만큼 메모리에 대해(정말 프로젝트가 방대해졌을때) 생각도 해야겠지만....

 

아무튼 이 편한 싱글톤패턴을 유니티에서도 구현할 수 있다.

 

구현방안은 아래와 같다.

 

첫번째 방안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class GameManager
{
    private static GameManager _instance;
    public static GameManager Instance
    {
        get
        {
            if(_instance == null)
            {
                _instance = GameObject.FindObjectOfType<GameManager>();
            }
            return _instance;
        }
    }
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}
cs

 

두번째 방안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class GameManager
{
    private static GameManager _instance;
    public static GameManager Instance
    {
        get
        {
            if(_instance == null)
            {
                instance = new GameObject("Game Manager");
                instance.AddComponent<GameManager>();
            }
            return _instance;
        }
    }
    void Awake()
    {
        _instance = this;
    }
}
cs

 

세번째 방안

1
2
3
4
5
6
7
8
9
10
11
12
13
public class GameManager : MonoBehaviour {
    private static GameManager _instance;
    public static GameManager Instance { get { return _instance; } }
    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this.gameObject);
        } else {
            _instance = this;
        }
    }
}
cs

 

 

거창하게 3가지나 적었지만..... 3개다 다 똑같은 싱글톤이다.

 

사용방안은 해당 스크립트 작성 후... 새로운 빈 GameObject를 만들어서 붙여주면된다...

 

깔끔!

 

 

반응형