본문 바로가기
Coding/Unity

[Unity] 빌드 이후 발생하는 NullExceptionError (빌드 이후 에러 해결)

by kelina_ 2022. 9. 20.

제목 그대로 유니티 play 에서는 발생하지 않았던 NullExceptionError가 빌드를 하니 발생했다.

그탓에 raycasthit 으로 잡고 있던 클릭 이벤트가 발생하지 않았다.

 

우선 빌드 후에는 Debug Log가 뜨지 않기 때문에 에러가 발생한 당시에는 앞길이 막막했는데 두 가지 방법으로 로그를 볼 수 있었다.

https://kim-lululala.tistory.com/23

 

[Unity] 빌드 이후 Log 보기

빌드 후 에러가 발생하면 로그가 뜨지 않는다는 게 가장 막막하다. 다행히 볼 수 있는 방법을 2가지 찾았다! 1. Development Build 체크하기 이걸 체크하고 빌드하면 왼쪽 아래에 작게 콘솔창이 나타난

kim-lululala.tistory.com

참고하세요!

 

아무튼 NullExceptionError이 왜 유니티 플레이할 때는 잡히지 않았는지 모르겠지만ㅠㅠ

인스펙터에서 비어있는 걸 알았지만 에러가 나지 않길래 채우지 않았다. >> 무조건 채워야 한다는 걸 깨달았다.

원래 이렇게 나머지는 다 비워두고, 해당 스크립트를 가진 gameobject에 해당하는 변수만 넣어서 사용했었다. 그 gameobject = target (hit되는 오브젝트) 이면 실행하는 식이다.

그런데 이렇게 하니 빌드 이후 매번 NullExceptionError이 발생한 것!

 

나 같은 경우는

1. 해당 스크립트를 가지고 있는 오브젝트가 많고

2. target이 경우에 따라 일치하는 변수가 달라야 했고

3. 오브젝트에 따라 변수의 값이 바뀌는 상태였다. (A오브젝트에서는 tmp 변수 = A, B오브젝트에서는 tmp 변수 = B 이런 식)

따라서 매번 인스펙터에서 모든 변수를 고정해서 채워줄 수 없었다.

결국 스크립트 자체에서 변수를 채워줬다!

이런 식..

사실 나는 Find를 좋아하지 않아서 지양했는데 아주 편하긴 하더라.

3번 같은 경우는 GameObject 배열에 넣어서 for문을 통해 hit 할 때마다 검사했다.

 

결국 에러를 해결하고 빌드 후에도 잘 돌아가는 걸 확인했다!

앞으로는 null이 뜨지 않도록 잘 채우자.

댓글