반응형
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를 만들어서 붙여주면된다...
깔끔!
반응형