Programing/Unity(C#)

[Unity] 오브젝트가 Destory되지 않게 하기

hye3193 2023. 12. 31. 17:17

 

유니티에서는 Scene을 기준으로 한 씬에서 다른 씬으로 넘어갈 때 이전에 있던 씬의 오브젝트들을 전부 Destory하고 이동하게 되는데, 이 때 오브젝트가 destory되지 않게 하는 방법에 대해 알아보겠다

 

void Awake()
{
    int numScenePersists = FindObjectsOfType<ScenePersist>().Length;
    if (numScenePersists > 1)
    {
        Destroy(gameObject);
    }
    else
    {
        DontDestroyOnLoad(gameObject);
    }
}

 

싱글톤 패턴을 사용하여 DontDestoryOnLoad함수를 사용한다

해당 스크립트를 적용한 오브젝트 하위에 유지시킬 오브젝트들을 넣어주면 된다

 

싱글톤을 사용하지 않을 경우, DontDestoryOnLoad에 gameobject가 계속 쌓여서 예상치 못한 오류를 낼 수 있기 때문에 꼭 싱글톤을 유지해줘야 한다