Unity씬과 데이터

DontDestroyOnLoad 기본

씬이 바뀌어도 유지되어야 하는 매니저나 음악 오브젝트를 다룰 때 쓰는 `DontDestroyOnLoad` 기본 패턴입니다.

마지막 수정 2026년 3월 19일

기본 패턴

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