본문 바로가기
개발/Unity

문제해결)Unity)Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)The following scene GameObjects were found:~

by 테샤르 2022. 10. 13.

Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)The following scene GameObjects were found:~

 

Singleton Class가 OnDestory에서 호출되면서 에러를 발생하는 상황으로

종료와 동시에 생성을하는 상황인데

디버깅으로 호출스택을 보면 좀더 수월하게 파악이 가능하다.

 

반응형

스크립트 LifeCylce의 OnDestory 상황이나 OnApplicationQuit에서 Flag 값을 셋팅하고 

Instance getter에서 return 처리를 진행하면 된다.

<Singleton Class>

 private static object _lock = new object();
     private static gameManager _instance;
     public static gameManager Instance
     {
         get
         {
             if (applicationIsQuitting)
             {
                 return null;
             }
 
             lock (_lock)
             {
                 if (_instance == null)
                 {
                     GameObject go = new GameObject("gameManager");
                     go.AddComponent<gameManager>();
                     DontDestroyOnLoad(go);
                 }
             }
 
             return _instance;
         }
     }
 private static bool applicationIsQuitting = false;
 public void OnDestroy()
     {
         Debug.Log("Gets destroyed");
         applicationIsQuitting = true;
     }

  Unity Community : [링크]

 

Some objects were not cleaned up when closing the scene - Unity Answers

 

answers.unity.com

 

비슷한 케이스로도  Scene 이 변경되는 과정에서 변경되는 씬에서 GameObject를 생성하는 순간 발생하기도 한다.

결론으로는 Scene이 종료되는 시점에서는 새로 생성하는 로직이 없어져야 한다.

 

 

★☆☆☆☆

 

[Unity -Top Paid Package]

[Unity -Top Free Package]

[Unity -New Asset Package]

 

 

반응형

댓글