워리어 콤보 모작 개발일지

워리어콤보 개발일지 - Block 삭제하기

다모아 2023. 9. 17. 18:04

Block 삭제하기 목표


Block 삭제하는 방법을 생각해봤고, 기존에 만들었던 TestSaveLocation에다가 List를 추가해서 

마우스 버튼을 누르는 상태일 때 그 gameObject를 저장하는 SaveBlock이라는 메서드를 만들었고

마우스 버튼을 뗀 상태일 때 저장한 gameObject를 삭제하는 DestroyBlock이라는 메서드를 만들었다.

 

처음에는 TestSaveLocation에 row와 col값을 저장했으니 거기서 저장과 삭제 처리를 해야지 생각하고

이렇게 TestSaveLocation에다가 메서드를 만들어서 TestMain에서 마우스버튼을 누르고있을 때 SaveBlock을 눌러서 데이터를 저장하고 DestroyBlock으로 데이터를 삭제시키는 메서드를 불러왔다.

 

오류 발생

근데 계속 이렇게 마우스를 누르는 상태에서 마지막 block만 삭제되는 현상이 발생했다.

 

왜 그럴까 고민하고 있었는데

생각해보니까 TestSaveLocation 스크립트는 각자의 gameObject의 스크립트로 박혀있어서 Destroy(this.listBlock[i]);를 해도 결국에는 내가 마지막에 찍었던 gameObject가 가지고있는 gameObject를 계속 for문으로 반복해서 Destroy하는 것이었다.

 

오류 해결

그래서 TestMain에다가 

 

마우스 클릭하고 있을 때 저장과 삭제 메서드를 넣어줘서 hit.collider.gameObject를 직접 다 list에 추가하였다.

 

그랬더니 내가 마우스버튼을 누르고있을 때 저장하고 마우스를 떼면 삭제가 잘되었다.