✏️ Singleton Pattern이란?
어떤 클래스가 최초 한 번 만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 패턴이다
전체에 단 하나이기 때문에 따로 매번 오브젝트를 생성하거나 탐색해서 찾을 필요없이 instance를 통해 빠르게 접근한다
✏️ 언제 사용할까?
여러 곳에서 동일한 상태의 객체를 동시에 접근해야 할 때
동일한 자원이나 데이터를 처리하는 객체가 불필요하게 여러 개 만들어질 필요가 없는 경우
Scene과 Scene 사이를 넘어갈 때 앞의 Scene에서 데이터를 받아와서 다음 Scene에서 사용하고 싶을 때 활용
- 해당 클래스의 instance가 하나만 존재, 어디서든지 그 instance에 접근할 수 있어야 함
- public으로 지정된 생성자가 없어야한다
- instance를 만들어 놓는 것이 아닌 요청을 생성한다
📣 싱글톤의 Component는 씬에 딱 하나만 존재할 수 있음
계속 만들어지는 Enemy나 Bullet은 사용 불가함
클래스에 정적변수 static으로 자기 자신의 클래스에 대한 Instance를 만들고 Awake()함수에서 정적변수를 초기화 한다
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
private void Awake()
{
instance = this;
}
public void DoSomething()
{
print("DoSomething");
}
}
다른 클래스에서 싱글톤 사용
public class MyUser : MonoBehaviour
{
void Start()
{
ScoreManager.instance.DoSomething();
}
}
'유니티' 카테고리의 다른 글
애니메이션의 특정 부분에 다른 이벤트가 함께 나타나는 기능 / Animation Event / Hit (0) | 2022.06.05 |
---|---|
공격을 받았을 때 Material 바꾸기 (Flash effect) (0) | 2022.05.24 |
FBSGunTarget 1인칭 시점 object grab (0) | 2022.05.12 |
프로퍼티(Property) get; set; (0) | 2022.05.12 |
c# 기본 (0) | 2022.05.09 |