📝 24.02.07
제목을 개인 과제 마무리라고 써뒀지만 사실 마무리 하지 못했다. 자괴감이 든다...
설계 상 여러 오류가 있었다는 것을 해설 영상을 보고 깨달아서 이를 수정하느라 애를 먹었다.
아예 처음부터 내가 생각한대로 구현했으면 더 빠르게 완성했을 수도 있었을 것 같은데, 오히려 기존의 3D 숙련 주차 강의 내용을 따라가고자 한 것이 작업 속도의 큰 저하 요인이었던 것 같다.
그래도 이번에 여러 오류를 겪으며 많이 배웠다. 그중 가장 큰 오류를 하나 서술해보겠다.
말 그대로 GameObject
가 비활성화 된 상태일 때는 해당 오브젝트에 붙어있는 컴포넌트의 instance
는 사용할 수 없다.
내가 이 사실을 잊어버리고 있어서 Inventory
를 instance
화 해두고, 그대로 해당 오브젝트를 활성화/비활성화를 반복하다보니 어떤 함수는 제대로 작동하고 어떤 함수는 오류가 발생하는 일을 겪었다.
그래서 이 오류를 해결하고자 기존의 Inventory 오브젝트 상위에 빈 오브젝트를 만들고 Inventory
로 이름을 수정하였고, 기존의 Inventory
오브젝트는 InventoryWindow
로 이름을 바꾸어 InventoryWindow
가 비활성화 대상으로 만들었고 Inventory
스크립트는 상위의 빈 Inventory
오브젝트로 옮겨주었다.
이렇게 하면 오브젝트의 활성화/비활성화를 오류없이 할 수 있다.
정말 당연한 오류인데 잊어버릴 때가 종종 있어서 골머리를 썩는다. SetActive
를 사용하는 오브젝트들은 분리하는 습관을 들이도록 노력해야 할 것 같다.