인프런 커뮤니티 질문&답변

김승재님의 프로필 이미지
김승재

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI Manager #1

뭐가 문제인지 모르겠어요 4시간 동안 애쓰고 있답니다...

작성

·

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

김승재님의 프로필 이미지
김승재
질문자

고쳤습니다 ㅠㅠㅠ 중단점 걸고 문제점 찾아보니 해결했습니다 ! 좋은 강의 항상 감사합니다.

혹시 추가로 질문할 것이 있는데 이 강의가 전반적으로는 저에게 너무 어렵고 힘든데 그래도 끝까지 강의 완료하는게 맞나요 ??? 조언좀 해주세요 ㅠㅠ

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그건 제가 판단할 수 없습니다만,
어려우면 더 배울 내용이 있다는 것이니 긍정적으로 생각하시면 됩니다.
그리고 전체적으로 시리즈가 초보자를 위한게 아니라
신입 프로그래머 교육 용도로 만든 것이라 난이도가 높습니다.

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

위 내용만으로는 저도 알 수 없습니다.

NullReferenceException: Object reference not set to an instance of an object

이것은 NULL 크래시인데 버그의 95%를 차지할 정도로 빈번하지만,
원인은 코드에 따라 다르기 때문에 코드를 다 봐야 알 수 있습닏.ㅏ
다만 좋은 소식은 아주 찾기 쉬운 편에 속합니다.

일단 중요한 부분은 버그를 눈으로 찾으려 하기 때문에 어려운겁니다.
크래시가 나는 부분에 breakpoint를 걸고 유니티에 연결을 해서
실제로 멈춰본 다음에, 메모리를 살펴보는 실습을 꼭 해보시기 바랍니다.

하나의 가설은 UIButton에 _가 없는데요.
ShowPopup 코드를 보면 클래스 이름을 이용해서
UI/Popup 경로에 있는 프리팹을 찾으려 하는데
지금 위 내용만으로 보면 일치가 안할 것 같네요.
이런 부분도 디버깅을 통해 살펴보셔야 합니다.

김승재님의 프로필 이미지
김승재

작성한 질문수

질문하기