TIL

매개변수 오타로 인한 NullReferenceException 문제 해결하기

youngjin02 2025. 5. 1. 21:10

문제 발생.

The Stack 게임을 만드는 중 Start 버튼을 누르면 게임이 진행되게 코드를 짰는데 문제가 발생했다.

Start 버튼을 누르면 오류가 뜨며 버튼이 반응하지 않았다.

오류 내용을 살펴보았다.

NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
HomeUI.OnClickStartButton() (Assets/Scripts/HomeUI.cs:29)

 

어떤 객체를 사용하려고 했는데, 그 객체가 null인 상태에서 .OnClickStartButton() 작업을 하려 했기 때문에 에러가 난 것 같다.

HomeUI의 29번째 줄에서 문제가 발생한 것으로 보인다.

                                                                                                                                                                      

문제 분석.

HomeUI이다.

uiManager.OnClickStart(); 부분에서 문제가 있는 것 같았다.

여기는 문제가 없는 것 같으니, uiManager로 계속 타고 들어가 보겠다.

UIManager에서도 이상한 점은 없었다.

 

HomeUI는 BaseUI를 상속받고 있다.

한번 BaseUI도 살펴보았다.

확인해보니 초록색 줄과 경고가 떠 있었다. 이곳이 문제였다..

                                                                                                                                                                      

문제점.

매개변수 이름은 uIManager (대문자 I) 이다.

그런데 대입할 때는 uiManager (소문자 i) 를 썼다.

 

C#은 대소문자를 구분하기 때문에 :

  • uIManager: 매개변수 이름 (존재함).
  • uiManager: 코드상에는 있지만 이 범위 안에는 존재하지 않음.

따라서

this.uiManager = uiManager;

는 실질적으로 아무 효과가 없는 코드였다.

즉, this.uiManager에는 아무 값도 대입되지 않아서 null로 남게 된다.

 

그 상태로 버튼을 클릭하면 :

→ uiManager.OnClickStart(); 호출
→ 하지만 uiManager가 null 상태
NullReferenceException 에러 발생

 

이렇게 문제가 발생한 것이었다.

                                                                                                                                                                      

해결 방법.

Init() 메서드 내에서 매개변수 이름을 정확히 일치시키면 된다.

매개변수 이름을 소문자로 바꿔서 수정했다.

수정 이후에는 startButton 클릭 시 NullReferenceException 에러가 발생하지 않고 정상적으로 동작하는 것을 확인했다!

                                                                                                                                                                      

  • 오늘 배운 것 요약
    • NullReferenceException은 객체가 null일 때 발생하는 에러이다.
    • 매개변수 이름과 사용하는 변수 이름을 정확히 일치시켜야 한다.
    • 에러 메시지뿐만 아니라, 경고 메시지도 오류를 찾는 데 큰 도움이 될 수 있다.