[UNITY] Destroy(GameObject) 로 삭제가 안될때 ?!

     


게임을 만들면서 소스가 좀 길어지다 보니까 GameObject를 객체로 생성해서 이쪽으로 넘기고 저쪽으로 넘기고 하는게 많아졌다. 그러다가 이상하게 Destroy로 GameObject가 삭제가 안되서 게임이 이상해지게 됐다. ㅇㅁㅇ!!


상황이 뭐냐면 새로운 위치에 GameObject를 생성하기 위해 위치를 저장하고 있는 EmptyObject를 하나 만들어서, EmptyObject의 위치를 기반으로 GameObject를 만들고나서, EmptyObject를 삭제하는게 목표였다. 그런데, 계속 EmptyObject가 남아있어서 게임에 혼란이 왔다.



요기서 EmptyObject인 cards[0]을 createdCard로 생성해서 AddCard로 넘겨주고, 

AddCard에서는 actingCard에 createdCard를 넣게된다.



그러면 이제 실제로 생성해야할 cards[1]을 actingCard의 위치를 받아서 생성하고, actingCard를 Destroy하게 되는데, 테스트를 실행해보면 생성은 정상적으로 되지만 EmptyObject가 삭제되지 않아서 게임에 오류가 나온다!





객체가 넘어갈 때 중복생성되는것은 아닌지, 생성할 때 두 개가 생성되는 것은 아닌지 요기조기 살펴봤는데 도저히 못찾겠다. 그래서 혹시나 Destroy의 정의를 찾아봤는데..


Destroy(GameObject)가 기본형.. 흠.. 혹시? 하고 actingCard가 gameObject로 되어있는지 찾아봤더니...



아하..!? 따로 만든 클래스인 Card로 되어있다. 즉 Destroy(actingCard)는 actingCard의 gameObject를 삭제하는 것이 아니라 그냥 actingCard 스크립트 자체를 삭제하는 것...


아래와 같이 수정하니 정상적으로 돌아간다. 



편 - 안 -





반응형

댓글

Designed by JB FACTORY