작성
·
558
0
NullReferenceException: Object reference not set to an instance of an object
Utill.GetOrAddComponent[T] (UnityEngine.GameObject go) (at Assets/Script/Utills/Utill.cs:10)
UIManager.ShowPopupUI[T] (System.String name) (at Assets/Script/Mangers/UIManager.cs:23)
PlayerControler.Start () (at Assets/Script/PlayerControler.cs:67)
먼저 오류 메시지는 이것입니다.
저는 UI_Button 프리펩 위치 Resources-Prefabs-UI-Popup폴더에 있구요
UIButton 스크립트 Scripts-UI-Popup 폴더에 있습니다.
이제 코드는 Utill.cs:10 -> T component = go.GetComponent<T>();
UIManager.cs:23 -> T popup = Utill.GetOrAddComponent<T>(go);
PlayerControler.cs:67 ->Managers.UI.ShowPopupUI<UIButton>();
실행 전 UI_Button 프리펩 딜리트했다가 하이라키에 있는 UI_Button 오브젝트를 다시 프리펩화 한다음 그 오브젝트는 다시 딜리트 하여
실행 해본 결과 UI_Button가 뜨지 않고 저 에러만 납니다.
뭐가 문제일까요 ???
답변 2
0
고쳤습니다 ㅠㅠㅠ 중단점 걸고 문제점 찾아보니 해결했습니다 ! 좋은 강의 항상 감사합니다.
혹시 추가로 질문할 것이 있는데 이 강의가 전반적으로는 저에게 너무 어렵고 힘든데 그래도 끝까지 강의 완료하는게 맞나요 ??? 조언좀 해주세요 ㅠㅠ
0
위 내용만으로는 저도 알 수 없습니다.
NullReferenceException: Object reference not set to an instance of an object
이것은 NULL 크래시인데 버그의 95%를 차지할 정도로 빈번하지만,
원인은 코드에 따라 다르기 때문에 코드를 다 봐야 알 수 있습닏.ㅏ
다만 좋은 소식은 아주 찾기 쉬운 편에 속합니다.
일단 중요한 부분은 버그를 눈으로 찾으려 하기 때문에 어려운겁니다.
크래시가 나는 부분에 breakpoint를 걸고 유니티에 연결을 해서
실제로 멈춰본 다음에, 메모리를 살펴보는 실습을 꼭 해보시기 바랍니다.
하나의 가설은 UIButton에 _가 없는데요.
ShowPopup 코드를 보면 클래스 이름을 이용해서
UI/Popup 경로에 있는 프리팹을 찾으려 하는데
지금 위 내용만으로 보면 일치가 안할 것 같네요.
이런 부분도 디버깅을 통해 살펴보셔야 합니다.
그건 제가 판단할 수 없습니다만,
어려우면 더 배울 내용이 있다는 것이니 긍정적으로 생각하시면 됩니다.
그리고 전체적으로 시리즈가 초보자를 위한게 아니라
신입 프로그래머 교육 용도로 만든 것이라 난이도가 높습니다.