기본 패턴
csharp
private void Awake()
{
DontDestroyOnLoad(gameObject);
}설명
DontDestroyOnLoad는 씬 전환 시 파괴되지 않고 계속 살아남아야 하는 오브젝트에 사용합니다.- 배경음악 플레이어, 전역 설정 매니저, 로딩 오버레이 같은 대상이 대표적입니다.
- 유지 대상이 늘어날수록 전역 상태가 많아지므로 정말 필요한 것만 남기는 편이 좋습니다.
- 새 씬에서도 같은 매니저가 또 생성되지 않도록 중복 방지 로직이 자주 함께 필요합니다.
짧은 예제
csharp
private static AudioManager instance;
private void Awake()
{
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
instance = this;
DontDestroyOnLoad(gameObject);
}빠른 정리
| 항목 | 설명 |
|---|---|
| 목적 | 씬이 바뀌어도 오브젝트 유지 |
| 대표 용도 | 음악, 설정, 전역 매니저 |
| 중복 방지 | 이미 존재하면 새 인스턴스 제거 |
| 전역 상태 | 늘어날수록 의존성이 커짐 |
| 최소 사용 | 꼭 필요한 오브젝트만 유지 권장 |
주의할 점
씬마다 같은 프리팹이 또 배치되어 있으면 매니저가 중복 생성될 수 있습니다. DontDestroyOnLoad 자체보다 중복 방지 설계를 함께 생각해야 합니다.
참고 링크
1 sources