본문 바로가기
Study/error 삽질

[C#, Unity] NullReferenceException: Object reference not set to an instance of an object 해결 방법

by 코딩여걸 2022. 12. 2.
728x90

실습 도중 이런 에러가 발생했다.

 

< Error Message >

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

👉 NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

 

< 문제 (Error) 발생 원인 >

null의 값을 가질 수 없는 object에 null을 할당했기 때문에 발생한다.

 

< 해결 방법 >

💡 방법 1 : 내가 해결한 방법

이런 식으로 오브젝트를 할당을 해주지 않아서 None 값으로 표시될수도 있고

MissingData처럼 스크립트에서 오브젝트 이름을 바꾸면 초기화가 될 수도 있으니

해당 오브젝트를 다시 할당해주어야 한다.

 

💡 방법 2 : 인터넷에서 찾아 본 방법

오류가 난 객체에 null 값이 할당되지 않도록 코드를 수정한다.

 

1) 기존 코드 : 선언과 null 할당을 한다.

2) 해결 코드 : new 연산자를 통해 변수만 생성 후 null을 할당하지 않는다.

 

🚨 추가 주의

코드 바꾸고 실행 잘 되는데도 Console 창에 에러가 계속 뜬다 싶은 경우

Clear를 눌러서 Console창을 깨끗하게 정리해 준 뒤 다시 실행했을 때도 같은 에러가 뜨나 안 뜨나 보자!

이미 해결이 됐는데도 Console창에 예전 error 메시지가 남아있어서 헷갈릴 수도 있으니까.. (내가 그랬다..ㅎ)

 

그리고 혹시 배포된 프로젝트의 경우 이런 에러가 발생하면 프로그램이 바로 죽어버리기 때문에

Object가 null 인지 아닌지에 대한 예외 처리를 해두면 더 좋다.

 

< 참고 사이트 >

https://docs.unity3d.com/kr/530/Manual/NullReferenceException.html

 

Null 레퍼런스 제외란 무엇입니까? - Unity 매뉴얼

NullReferenceException은 오브젝트를 레퍼런스하지 않는 레퍼런스 변수에 액세스하려고 하면 발생합니다. 레퍼런스 변수가 오브젝트를 참조하지 않는 경우 null로 처리됩니다. 런타임은 변수가 null일

docs.unity3d.com

 

728x90

댓글