유니티 엔진/유니티 엔진의 구성

유니티 엔진의 구성 - 39) NullReferenceException 예외 해결

monstro 2026. 4. 28. 17:10
728x90
반응형

- 개요

 

객체지향 언어에서 변수는 어느 한 타입의 실제 객체가 아니라 객체의 주소를 담은 포인터로서 동작한다

이때 주소가 없는 상태에서 객체의 데이터를 가져오라고 명령할 때 NullReferenceException 에러가 발생한다

해당 에러는 변수를 단순히 할당하거나 전달할 때는 발생하지 않지만,

변수를 통해 속성이나 필드에 접근하거나, 메서드를 호출하는 경우 발생한다

 

1) NullReferenceException 예외 해결 절차

해당 예외를 해결하는 절차는 크게 4가지로 구분할 수 있다

  • 1) 첫 번째 절차 - 에러 라인 확인 : 콘솔의 Stack Trace를 더블 클릭하여 에러가 발생한 코드를 찾음
  • 2) 두 번째 절차 - 코드 분석 : 해당 코드에서 .(점) 앞의 객체null일 가능성이 있는 객체를 모두 나열
  • 3) 세 번째 절치 - 값 검증 : 에러 라인 직전에 디버깅을 통해 의심되는 변수들의 실제 값을 체크
  • 4) 네 번째 절차 - 해결 방법 결정 : null인 이유에 따라 널 체크를 할지, 객체 할당을 생략할지 결정 

 

2) NullReferenceException 예외 주요 사례

 

해당 예외가 발생할 수 있는 주요 사례를 위와 같이 간단히 정리하였다

간략하게 표현하면 다음과 같다

  • SerializeField 변수 : 에디터에서 드래그 앤 드롭하여 대상 오브젝트 할당
  • Find 함수 : 오브젝트의 이름코드 내 문자열 이름정확히 일치하도록 수정
  • 변수 스코프 : 지역 변수 대신 멤버변수를 사용하도록 수정 

 

3) 디버깅 도구 비교

 

디버깅을 위해 선택할 수 있는 기본적인 도구는 위와 같다

빠르게 상황을 확인해야 하고, 비교적 간단한 상황이라면 Debug.Log를 사용하고

코드가 복잡하여 모든 변수의 상태를 확인해야 한다면 에디터의 중단점을 이용하여 디버깅한다

728x90
반응형