[ 패시브 아이템 사용 불가 버그 ]
트러블 슈팅
컨디션과 관련된 아이템은 정상적으로 사용되고 UI에도 적용이 됐지만, 패시브와 관련된 아이템은 사용부터 되지 않는 버그가 있었다. 사용하기 버튼을 누르면 NullReferenceException: Object reference not set to an instance of an object 에러가 떴다. 원인을 확인하기 위해서 에러가 발생하는 코드에서 디버깅을 했다.
디버깅을 했을 때 UIInventory 스크립트의 OnUseButton 메서드에서 passive에 null 값이 있어서 에러가 발생했다.
해당 스크립트에서 정의된 passive 변수에서도 null이 떴다. 원인은 PlayerPassive 스크립트와 UIInventory 스크립트와의 연결이 잘 되지 않은 것이었다. passive 변수에 아무런 값도 들어있지 않기 때문에 passive 변수를 초기화해 주어야 했다.
UIInventory 스크립트의 Start 메서드에 passive를 초기화하는 코드를 작성했지만, 여전히 passive에는 null 값이 들어있었다.
Player 스크립트에 가보니 passive는 정의되었지만, Awake 메서드에서 PlayerPassive의 컴포넌트를 가져와서 passive에 할당하지 않았기 때문에 null 값이 뜨는 것이었다.
게임을 실행하니 이번에는 다른 코드에서 null 참조 에러가 발생했다.
리턴 값을 받아오지 못해서 speedUp 변수가 null이 됐다.
코드는 모두 제대로 연결됐는데, UIPassive 스크립트의 Start 메서드가 제대로 호출되고 있는지 확인하기 위해서 디버그 로그를 찍어봤다. 비교를 위해 UIConditions에도 코드를 작성했는데, UIConditions에서는 디버그가 됐지만, UIPassive에는 디버그가 되지 않았다.
원인은 에디터에서 오브젝트에 스크립트를 컴포넌트로 추가하지 않았기 때문이었다. Passive 오브젝트에는 UIPassive 스크립트를 추가하고, SpeeUp 오브젝트와 JumpUp 오브젝트에는 Passive 스크립트를 추가하면 데이터가 제대로 전달되어 null 값이 되지 않는다.
'Coding > Unity' 카테고리의 다른 글
[내일배움캠프 38일차 TIL] 아이템 데이터 참조 에러 트러블 슈팅 (0) | 2024.06.10 |
---|---|
[내일배움캠프 35일차 TIL] 컴포넌트에 데이터 자동 할당, Can't add script 에러 (0) | 2024.06.04 |
[내일배움캠프 30일차 TIL] 인벤토리 창 트러블 슈팅 (0) | 2024.05.28 |
[내일배움캠프 23일차 TIL] 스크립터블 오브젝트, 레이어 마스크, 비트 시프트 연산, 오브젝트 풀링, FindGameobjectWithTag (0) | 2024.05.17 |
[내일배움캠프 21일차 TIL] 애니메이션 적용, 이름 입력, 씬 전환 시 데이터 유지, DontDestroyOnLoad (0) | 2024.05.14 |