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() 내에 작성하면 된다
'Programing > Unity(C#)' 카테고리의 다른 글
[Unity] UI 요소 제외하고 클릭 이벤트 감지하기 (0) | 2024.01.07 |
---|---|
[Unity] getter, setter 메서드 (0) | 2024.01.05 |
[Unity] 버튼 클릭해서 씬(Scene) 전환하기 (0) | 2024.01.03 |
[Unity] 화면 흔들림 효과 (0) | 2024.01.03 |
[Unity] 화면 밖으로 오브젝트 이동 불가하게 만들기 (0) | 2024.01.01 |