• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

if (tm == null) return; 을 포함할 경우 유니티가 화를 냅니다

22.02.02 19:42 작성 조회수 269

0

우선, 새해 복 많이 받으세요. 선생님.

다름이 아니라 해당 강좌 약 15분까지의 내용 중에서

MapEditor.cs에 if (tm == null) return; 을 포함할 경우 유니티에서 화를 내면서 

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

MapEditor.GenerateMap () (at Assets/Editor/MapEditor.cs:31) 를 출력하고,

output.txt에 아무것도 써주질 않습니다.

if (tm == null) return;을 삭제하면 정상적으로 만들어집니다. 강좌에선 포함해도 잘 진행되는걸로 나왔는데 말이죠.

(강좌 15분 이후에 결국 해당 if문은 필요없어서 삭제하시긴 합니다만 저기서 막혀서 한참 씨름했네요)

무엇이 문제였는지 궁금해서 여쭤봅니다.

 

답변 1

답변을 작성해보세요.

0

NULL 크래시는 개발할 때 아주 높은 확률로 만나는 문제이기 때문에
저에게 물어보시면 안 되고 스스로 분석하셔야 합니다.
툴에서 실행하는 것도 마찬가지로 breakpoint를 걸고 디버깅이 가능하니,
어느 부분이 NULL인지 확인하고 그 이유를 역으로 추적하면서 생각해보시기 바랍니다.

 

후...유레카...찾았습니다. Tilemap_Collision 오브젝트가 꺼져있었습니다. 두 눈 멀쩡히 뜨고 있는데 왜 이게 안 보였을까요.

직접 분석하라는 조언 감사드립니다. 있을 법한 실수를 선생님이 직접 찍어주셨으면 해결은 바로 했겠지만 아마 또 금방 까먹었을거에요.

MapManager 강좌에서 제가 겪었던 부분을 해결해주시는군요. 혹시 다른 분들도 같은 어려움을 겪으셨다면 해당 강좌 참고하시기 바랍니다.