[유니티 Unity] Dontdestory.onLoad 오브젝트 한번만 만들어지게 만들기

Dontdestory.onLoad 된 오브젝트 중복생성 막기

 

기본적으로 씬(Scene)을 전환했을때

현재 씬(Scene)에 있던 게임 오브젝트는 사라지고

전환 된 씬(Scene) 안에서 앞에서 사용했던 오브젝트를 찾을 수 없다.

 

이전에 사용하던 오브젝트를 씬(Scene)을 사라지게 하지 않고 그대로 가져오기 위해서 

다음과 같이 Dontdestory.onLoad()를 오브젝트에 적용해주면

이전에 사용했던 오브젝트의 정보를 그대로 가지고 와서 다음 씬에서 사용이 가능하다.

 

   public void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }

 

 

이렇게 지워지지 않게 했을 경우,

다시 기존의 씬(Scene)으로 돌아오게 되면 해당 오브젝트가 지워지지 않고

새로 생성되는 것을 확인 할 수 있다.

 

새로 생성되는 오브젝트는 이렇게 계속 쌓이다보면 무거워 질뿐 아니라 

쓸모 없는 오브젝트이므로 하나만 생성 해야하는데

다음과 같이 다음 씬을 넘어갈 떄 해당 오브젝트가 존재하는지 확인 해 주고

존재하는 경우, 해당 오브젝트를 삭제하여 한개만 남겨 중복 생성을 방지 한다.

 

 

   public void Awake()
    {
        if (instance != null)
        {
            Destroy(gameObject);
            return;
        }

        instance = this;
        DontDestroyOnLoad(gameObject);
    }