싱글톤(Singleton)은 어떤 클래스의 인스턴스를 단 하나만 생성하도록 보장하는 디자인 패턴.
(유니티(Unity)에서는 주로 전역적으로 접근 가능한 객체를 싱글턴으로 만듬)
(예: 게임 매니저, 오디오 매니저, 스코어 매니저 등)를 구현할 때 사용
싱글톤은 특정 클래스의 인스턴스를 어디서든 접근할 수 있도록 하면서도
해당 클래스의 인스턴스가 여러 개 생성되지 않도록 제한함.


스크립트 해석
ChangeScene 스크립트
(UI버튼을 눌렀을 때, 빌드된 다음 씬으로 이동하는 기능을 구현)
SceneManager.GetActiveScene() : 현재 실행 중인 씬(Scene)을 반환
// 버튼 클릭 시 호출되는 메서드
public void LoadNextScene()
{
// SceneManager.GetActiveScene() : 현재 실행 중인 씬(Scene)을 반환
// 반환된 씬 객체의 빌드 인덱스(Build Index)를 가져옴.
// 현재 씬의 빌드 인덱스에서 +1을 해서 "다음 씬"의 인덱스를 계산
int nextSceneIndex = SceneManager.GetActiveScene().buildIndex + 1;
// Unity에서 씬을 전환하는 함수
SceneManager.LoadScene(nextSceneIndex);
}
DataManager 스크립트
(싱글톤(Singleton) 패턴을 사용하여 DataManager 클래스를 구현한 예제)
DontDestroyOnLoad() : 특정 게임 오브젝트(GameObject)가 씬(Scene)이 전환될 때 파괴되지
않도록 설정하는 메서드
// instance가 null이라면(즉, 아직 초기화되지 않았다면), 현재 객체(this)를 instance에 저장
if (instance == null)
{
instance = this;
// 씬 전환 시에도 현재 GameObject가 파괴되지 않도록 설정
// DontDestroyOnLoad 메서드는 루트 게임 오브젝트(root GameObject) 에서만 동작
// Hierarchy 창에서 다른 게임 오브젝트의 자식이 아닌 최상위에 위치한 게임 오브젝트를 의미
DontDestroyOnLoad(this.gameObject);
}
K_Singleton 스크립트
Unity에서 제네릭 싱글톤 패턴을 구현한 클래스.
싱글톤 패턴은 특정 클래스의 인스턴스를 단 하나만 유지하도록 보장.
이 코드는 Unity 환경에서 MonoBehaviour 기반의 싱글톤 클래스를 일반화(제네릭)하여 쉽게 재사용할 수 있도록 설계
transform.parent : 부모 오브젝트
transform.root : 루트 오브젝트(최상위 부모 오브젝트)
private void Awake()
{
// 부모 오브젝트가 있거나, 루트 오브젝트가(최상위 부모 오브젝트)가 존재한다면
// 즉 이 오브젝트가 자식 오브젝트라면 하기의 코도를 실행
if (transform.parent != null && transform.root != null)
{
// transform.root.gameObject는 현재 게임 오브젝트의 루트 오브젝트를 나타냄.
// 루트 오브젝트를 DontDestroyOnLoad로 설정하면 루트 오브젝트와 그 자식 오브젝트들이 모두 씬 전환 후에도 유지
DontDestroyOnLoad(transform.root.gameObject);
}
else
{
// 만약 루트 오브젝트라면, 이 게임 오브젝트(루트 오브젝트)를 파괴되지 않게함
DontDestroyOnLoad(this.gameObject);
}
}
GameManager1 스크립트
K_Singleton<T> 제네릭 싱글톤 클래스를 확장한 GameManager1 클래스
Test1 스크립트
DataManager와 GameManager1의 싱글톤 인스턴스를 호출
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| Anchor 프리셋을 사용하는 이유 (0) | 2025.01.25 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2025_01_23 강의 요약 및 정리 (0) | 2025.01.23 |
| [멋쟁이사자처럼 유니티 TIL] 2025_01_17 강의 요약 및 정리 (0) | 2025.01.18 |
| [멋쟁이사자처럼 유니티 TIL] 2025_01_16 강의 요약 및 정리 (0) | 2025.01.16 |
| 유니티 디자인패턴_Startegy Pattern패턴 (0) | 2025.01.16 |