Unity/Tip

오브젝트 파괴 시 OnDestroy 이벤트 함수가 호출되지 않을 수 있다??

코샵 2023. 12. 9. 11:16
반응형

Unity에서 GameObject를 삭제하면 OnDestroy 메서드가 호출됩니다. OnDestroy 메서드는 GameObject가 삭제되기 전에 실행되는 메서드로, GameObject의 자원 해제, 데이터 저장 등의 작업을 수행하는 데 사용됩니다.

 

하지만, OnDestroy 메서드의 호출은 보장되지 않습니다. , GameObject 삭제되더라도 OnDestroy 메서드가 호출되지 않을 수도 있습니다.

 

공식문서의 설명을 보면 MonoBehaviour를 상속 받는 객체가 파괴 될 때 호출된다고 적혀 있습니다. 이 글을 보시는 분들은 다들 이 부분은 알고 계실것이라 생각합니다. 

 

그 아래에 중요한 내용이 적혀 있는데 

OnDestroy는 이전에 활성화되어있던, 게임 오브젝트상에서만 호출됩니다.

 

즉, 호출이 되지 않을 수도 있다는 것 입니다. 예를 들어 게임 씬에서 오브젝트를 삭제하면 OnDestroy가 호출되지 않을 수 있습니다. 

 

오브젝트 파괴 시 해야할 일이 있다면 OnDestroy 대신 OnDisable을 사용하는 것을 추천드립니다.