본문 바로가기
Development/Unity

[내일배움캠프 30일차 TIL] 인벤토리 창 트러블 슈팅

by 식냥 2024. 5. 28.
728x90

 

[ 인벤토리 아이템 NullReferenceExeption 에러 ]

트러블 슈팅

인벤토리에 들어온 아이템을 클릭하면 오브젝트를 찾을 수 없다는 NullReferenceException: Object reference not set to an instance of an object 에러가 뜬다.

 

에러가 뜬 줄에서 디버깅을 했더니 selectedItem이 null이었다.

selectedItem에서는 slots[index].item이 null이었다.

slots[index].item이 있는 if문을 확인해보니 == 연산자를 사용해서 값이 null인지 확인하는 조건이 되게 해야하는데, = 연산자를 사용해서 null이 할당되어 있었다.

 

== 연산자로 수정했더니 정상적으로 작동되었다.

 

[ 인벤토리 창의 아이템 능력치 표시 오류 ]

트러블 슈팅

당근 오브젝트의 타입을 Health와 Hunger 두 가지로 추가하고 각각 Value 값으로 10과 20을 입력했는데, UI 창에서 Value 값이 정상적으로 표시가 되지 않았다.

 

원인은 selectedStatValue.text = selecteItem.consumables[i].value.Tostring() + "\n"; 줄에서 값을 더하는 게 아니라 할당하는 연산자를 사용하고 있었기 때문이었다. 여러 값이 있을 때는 +=를 통해서 원하는 내용을 모두 표시할 수 있다.

 

코드를 수정한 뒤에는 정상적으로 인벤토리 창에서 Value 값이 표시되는 것을 확인할 수 있었다.

 

[ 회고 ]

오늘은 몸 상태가 아주 좋지 않았다. 너무 피곤해서 눈도 제대로 못 뜨고 정신을 거의 못 차린 채로 강의를 들었다. 그래서 강의를 그대로 따라 했음에도 사소한 부분에서 실수가 생겨서 에러가 발생했다. 그래도 다행히 쉽게 발견할 수 있는 에러라서 금방 해결할 수 있었다. 그리고 연산자 하나를 잘못 쓰는 것만으로도 게임이 정상적으로 실행되지 않기 때문에, 더 꼼꼼히 코드를 살펴보고 작성할 때부터 정신 차리고 작성해야겠다는 생각이 들었다. 이번에는 다행히 에러가 떠서 바로 찾을 수 있었는데, 코드 자체는 정상이었다면 찾는 데 시간이 정말 오래 걸렸을 것 같다. 아직 과제를 수행하지 못해서 새벽에 좀 해놓을까 싶었는데, 오늘 하는 걸 보니 휴식도 학습에 중요한 요소인 것 같다.

 

▼위대한 광명이 깃든 태초의 빛

728x90
반응형